Sua suposição "impossível" está bem no contexto de protocolos que usam nomes de host e não URLs.
Um nome de host é apenas um mapeamento do nome para o endereço IP. Nenhuma informação da camada de aplicação (portas TCP, etc) é transmitida em um hostname. Você está confundindo a sintaxe da URL de "protocol: // hostname: port" com apenas os nomes de host que os protocolos não baseados em URL usam.
Registros de SRV devem resolver este tipo de problema, mas pouquíssimos protocolos usam SRV RRs para resolver o problema. endpoints de protocolo. (O que é uma pena, realmente ...)
No contexto de um protocolo HTTP, você poderia usar um host virtual baseado em nome para fazer o que você está falando, mas a "porta 12345" não seria necessária de qualquer maneira, já que os hosts virtuais baseados em nome existem com a finalidade de permitir que você execute várias instâncias do servidor da web em um único endereço IP e porta TCP (geralmente a porta HTTP bem conhecida, 80).