Вы ошибаетесь - уникальность сокета определяется четырьмя факторами:
- локальный IP-адрес
- номер локального порта
- удаленный IP-адрес
- номер удаленного порта
При предложении сетевых сервисов 1. и 2. обычно являются статическими (например, IP 10.0.0.1, порт 80), но если вы не ожидаете тысячи соединений от одного клиента (или одного шлюза NAT), вы не собираетесь выдвигать границы возможных комбинаций 3. и 4. до того, как закончатся локальные ресурсы.
Таким образом, хотя практически клиент не будет использовать уже используемый порт для подключения, чтобы открыть подключение к другому IP-адресу назначения, истощение номера порта будет наименьшей из ваших проблем практически для любого приложения - будь то на сервере или сторона клиента.
Проблема вполне реальная: шлюзы NAT (маршрутизаторы) обслуживают клиентов с большим количеством открытых исходящих соединений (например, торрентов) - там вы увидите истощение номера порта после опустошения пула портов, доступного для NAT. В этом случае шлюз NAT не может создать какие-либо дополнительные ассоциации, тем самым эффективно отключая клиентов от Интернета.