Split `PeerManager::handle_message` to avoid explicit `mem::drop`