To be able to label incoming tor connections as different from normal localhost connections in e.g. `getpeerinfo` and the peers list in the GUI it'd be useful to have them connect on an alternative local-only port. Or even better, a UNIX socket.

For manually set-up hidden services this would have to be configured manually and could add a `hsport` option or such. The external port would still appear as `XXXXXXXXX.onion:8333`, however internally it would redirect to a that port.

In the case of `torcontrol` this would be easy to set up automatically. It could add a new (localhost) binding port automatically and this code would have to be changed:
- https://github.com/bitcoin/bitcoin/blob/master/src/torcontrol.cpp#L441
- https://github.com/bitcoin/bitcoin/blob/master/src/torcontrol.cpp#L477

private:
    struct event_base* base;
    std::string target;
    TorControlConnection conn;
    std::string private_key;
    std::string service_id;
    bool reconnect;
    struct event *reconnect_ev;
    float reconnect_timeout;
    CService service;
    
    std::vector<uint8_t> cookie;
    
    std::vector<uint8_t> clientNonce;
    
    void add_onion_cb(TorControlConnection& conn, const TorControlReply& reply);
    
    void auth_cb(TorControlConnection& conn, const TorControlReply& reply);
    
    void authchallenge_cb(TorControlConnection& conn, const TorControlReply& reply);
    
    void protocolinfo_cb(TorControlConnection& conn, const TorControlReply& reply);
    
    void connected_cb(TorControlConnection& conn);
    
    void disconnected_cb(TorControlConnection& conn);
    
    static void reconnect_cb(evutil_socket_t fd, short what, void *arg);
};
TorController::TorController(struct event_base* _base, const std::string& _target):