relay: start dealing with disconnects maturely

* don't simply remove old channel buffers - retain snapshots they can be used later
* rejoin previous channels when a disconnect occurs