Что лучше применить для мессенджера многопоточность или неблокирующий ввод/вывод?
Лучше применить ту технологию, которая больше подойдёт для решения конкретных задач в определённых условиях. А они в вашем вопросе не описаны.
Многопоточность - это не соединения, а потоки обработки каждого соединения.
NIO - это обмен данными по сети.
Применять надо и то, и то!