Приложение может слушать сколько угодно портов.
Можно даже один порт слушать двумя приложениями, есть даже такой вариант, но он редко используется.
Но вот совершенно не обязательно разбивать листенеры по ядрам - в большинстве случаев, если у вас предполагается нагрузка, то после того, как на порт приходят данные, проверяется есть ли уже установленная сессия, и если нет, создается отдельный поток для нового юзера/подключения. А уже какое ядро - ОС сама разберется с многопоточностью.