Fix SSM join after quick restart of a remote beacon

When the explicit leave message from a stopping/dying remote beacon is
not received and the beacon is restarted within the timeout interval
of the local beacon, the local beacon leaves (S, G) and never re-joins
it.

The fix works by collecting all beacons with the same source address
(but differing source ports) in a set.  The (S, G) channel is joined
when the first entry is created and left when the set becomes empty.