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

if (fHavePruned && !fPruneMode) {
                    strLoadError = _("You need to rebuild the database using -reindex to go back to unpruned mode.  This will redownload the entire blockchain");
                    break;
                }
                
                
                
                
                if (!fReindex && !LoadGenesisBlock(chainparams)) {
                    strLoadError = _("Error initializing block database");
                    break;
                }
                
                
                bool failed_chainstate_init = false;
                for (CChainState* chainstate : chainman.GetAll()) {
                    chainstate->InitCoinsDB(
                         nCoinDBCache,
                         false,
                         fReset || fReindexChainState);
                    chainstate->CoinsErrorCatcher().AddReadErrCallback([]() {
                        uiInterface.ThreadSafeMessageBox(
                            _("Error reading from database, shutting down."),
                            "", CClientUIInterface::MSG_ERROR);
                    });
                    
                    
                    if (!chainstate->CoinsDB().Upgrade()) {