Use healthy connections with the shortest write queue first

* Try to use healthy connections with the shortest write queue. This should
  improve robustness under load and performance when load between nodes is
  uneven.
* reconnect to broken connections with some probability