1) Volley вызывает Listener на главном потоке (а не на worker потоке, который делал запрос)
2) Вы циклом ожидания заблокировали главный поток и поэтому Volley не смог вызвать ваш листнер (изза особенностей работы главного потока). А значит выхода из цикла не будет никогда - live-lock.
3) Т.к. onResponse уже на главном потоке, то никто не мешает там же отобразить результат в ГУИ.
4) Парсить жсон на главном потоке очень плохо.
Решение очень легкое, пишется в десяток строк в коде
ищем по введеному слову, если находим ничего, ищем по слову в обратной раскладе, если находим то выводим результаты и слово в другой раскладке, если не находим то выводим оригинальное слово и что ничего не найдено.