To forum wygląda na mocno nieżywe, albo nikt ci nie chce odpowiedzieć bo to jest porostu głupie, w każdym bądź razie...
Dziwne bo nie znalazłem na twój temat nic dlaczego dostajesz kod błędu 234 zamiast 90. Tak powinieneś dostawać boost::asio::error::message_size ponieważ próbujesz wczytać wiadomość do bufora o długości jednego znaku. Maksymalnie pakiet może nawet wynieść 64k więc powinieneś go zwiększyć.
Czytając po jednym znaku, zazwyczaj twój kod będzie wolny. Więc wcale się nie dziwię że QUdpSocket był dla ciebie wolny.
Osobiście nie zauważyłem znaczącej różnicy między ASIO a Qt5, co najwyżej kilka procent na rzecz asio. Przynajmniej przy co najwyżej kilku gniazdach i jednym wątku, nie ma żadnej różnicy.
Co do integracji Qt z ASIO to jest konkretny problem. Najfunkcjonalniejsza jest integracja io_service w pętli QThread, ale to dość kłopotliwe i nie widziałem do tego dobrej gotowej implementacji.
Wydaje się że najłatwiej jest stworzyć zwykły wątek boost::thread a obiektami z Qt komunikować się do Qt za pośrednictwem QInvokeMethod oraz w przeciwnym kierunku z is_service::post (ewentualnie io_service::strand).