The current implementation of server address pinning for transactions on sharded and load-balanced clusters relies on the Cluster#getDescription method. This means that blocking has to be done twice instead of just once via Cluster#selectServer. It would be easy to refactor so that the cluster type (which is all that is needed) is derived instead from the ConnectionSource after it's selected.
This would simplify the code, allow the removal of Cluster#getDescription, and make server selection timeout logging and exception message more consistent.