If you get more than a few replies, they should not be in the same order each time. The sending host, however, is normally the first reply since the datagrams to and from it loop back internally and do not appear on the actual network.
Under FreeBSD, when the signal handler writes the byte to the pipe and then returns, select returns EINTR. It is called again and returns readability on the pipe.