Dumpling backport: clean up osd subscriptions

This is a Dumpling backport (fairly trivial) of a branch that cleans up how the OSD handles its subscriptions, which will prevent it repeatedly requesting the same maps from monitors on every reconnect.
(This behavior was part of a cascade event we saw on a large production cluster; it eventually cleaned itself up but these changes would have made the cleanup much faster or maybe even prevented the problem.)