imho, с помощью NIO вы не получите больше производительности от своего клиента. Узким местом будет либо сервер, либо сеть. Кроме того, NIO более сложный, и, вероятно, вы получите что-то не так, что ухудшит производительность.
Я бы начал с реализации сокета, чтобы быстрее его запустить и запустить. Если вы будете следовать некоторым общим шаблонам / принципам, таким как принцип единой ответственности, было бы легко переключить реализацию позже (если вы или ваши пользователи доказали, что производительность ваших приложений является узким местом, которое я считаю крайне маловероятным).
Обновление
Что делает NIO или любая другая асинхронная структура, чтобы позволить нескольким операциям совместно использовать одни и те же потоки. Наличие одного потока на соединение при работе с большим количеством соединений является пустой тратой ресурсов, поскольку все потоки не будут активны все время.
Использование NIO для клиента не даст вам никаких преимуществ, если у вас всего несколько соединений. Наличие потока + сокета для каждого соединения не потребляет так много ресурсов, и будет легче обрабатывать соединение.