Cleaner implementation of UpdateShardStates + more tests

(Since we shouldn't assume pool implementation allows duplicate registration)
is this cleaner to just avoid calling m.pool.Register unnecessarily on an address?

p.s. the comment should removed below