Add handshake to client and worker
We've had some human-errors where we've been telling the client to connect directly to workers.
We should:
- make sure the worker and controller print out their own listening address
- have a handshake on connect so that the worker and controller can detect an incorrect connection (e.g. clients should not connect directly to workers).