Split hello into hello_request and hello_response and other bugfixes

Without this pull request, a node will never send a hello message to a peer that the node already knows which prevents successful reconnects. This means that a hello message should always be replied by a hello message leading to an infinite loop. Therefore, we need to distinguish between hello requests and hello responses.