Pode haver um número infinito de conexões de entrada para uma única porta (sujeito aos limites de implementação do SO), desde que a outra extremidade possa ser identificada com combinações exclusivas de porta IP. O servidor não precisa abrir uma porta local exclusiva para cada cliente. Então, o primeiro bit se sua segunda parte está certa.
Além disso, a maioria dos sistemas operacionais pode lidar com dezenas de milhares de threads sem muita perda de desempenho percebida. Contanto que os manipuladores de solicitação sejam codificados com os requisitos de programação concorrentes usuais, os encadeamentos devem ser quase independentes uns dos outros. Eu acho que a maioria dos aplicativos bancários irá sincronizar em um banco de dados ao contrário de muitos objetos na memória, então a chance de um thread ser bloqueado esperando por outro é ainda menor.