Ma vuoi prendere il primo host che ha risposto entro 5 secondi .... o uno a caso di quelli che hanno risposto entro 5 secondi?
Se N host ti inviano ciascuno un datagram, chiaramente riceverai (potenzialmente, visto che non c'è alcuna garanzia) N datagram. Ovviamente in sequenza, cioè con il receive ne tiri fuori solo uno per volta.
L'indirizzo del mittente lo puoi sapere dal pacchetto stesso ( getAddress() ).