Wenn du mehrere Threads als Empfänger hast, würde ich das dann auf einen Dispatcher-Thread umstellen, also nur noch einen Empfänger.
Der stellt dann die Pakete wieder zusammen und leitet dann das vollständige Paket an eine interne Thread-Queue weiter.
Diese nehmen sich dann wieder nach Roundrobbin die vollständigen Einträge aus der Queue.