HC поддерживает Keep-Alive, причем с очень древних своих версий.
но HC упорно меняет "клиентский порт" на новый
Как это? Соединения инициирует сам клиент, а не HC. Поменять "клиентский порт" HC в принципе не в состоянии, как и установить новое соединение с
клиентом по своей инициативе.
и для другово соединения к этому-же серверу открывает новое
Смешались в кучу кони, люди... Есть соединения типа Клиент-HC, а есть HC-Сервер и они как бы разные, но оба поддерживают Keep-Alive. Так с какими из них у тебя проблемы? А то начал повествование про проблему с первыми, а закончил на вторых.
Да, соединения могут закрываться самим HC при простое по таймауту вроде через 30 секунд, точно не помню. Но чаще всего еще раньше это делает сам клиент, либо сервер. В отладочном логе HC должно быть видно, кто первым рвет соединения.