When we retry the consul handlers, we refetch the value - if it just so happens, that the value changes after one of the handlers has finished successfully, but another is still retrying, the successful one might not be called at all with the most recent value.
Example:
a watched value changes, handlers A and B are set to run
A passes on the first try, but B throws an error so it's retried
after 5 retries, the value changes again, so the next call of B will be with the new value
...but A isn't called again at all, ever
Currently, this breaks the set-active system tests
Also continued in CFY-7175.
Fixed by rewriting the `run_handlers` code to make sure it is retried correctly.