DLB: Fix replica connection handling

Context

This is part of Container Registry: Database Load Balancing (DLB) (&8591 - closed). See the epic description and the listed implementation plan for more details.

Task

I've identified two problems with how replica connections are currently handled:

  1. We're recycling connections to already existing replicas. Whenever we refresh the replicas pool, we simply go and open connections to each identified replica, regardless if the target host was already part of the pool. As a consequence, we're not only wasting resources by establishing new connections to already connected replicas, but we're also breaking connections to replicas that were already present;

  2. We're not closing connections to retired (upon refresh) replicas. This is now surprise and there was already a TODO in the codebase about it, but no issue. So this issue also covers this. We should also check the health of existing replicas and retire then if unreachable.

Edited by João Pereira