Add support for duplicate shard states in BaseShardManager

This fixes an issue where a connection is not registered if it has multiple ShardState entries.
You're dropping an already registered pool.  The more correct fix is to dedup shardStates before counting.