osd: fix hb con failure handler

- check against both front and back cons; either one may have failed.
- close *both* front and back before reopening either.  this is overkill,
  but slightly simpler code.
- fix leak of con when marking down
- handle race against osdmap update and note_down_osd

This fixes the problem where we reopen the front con before closing it and
get back the same one.. and then close it again.

Fixes: #5172
Signed-off-by: Sage Weil <sage@inktank.com>