Better logic for srv_topo_server cache.

Duplicating the same logic as zkocc. That way we only do
one query at a time to the underlying topo server. And not as
much lock contention on the global maps.
Comments addressed from last submit.