I did some rudimentary testing on autoipd between two vmware boxes running a FreeBSD 6.1 variant. I used the "-S" option to test the challenge/response part of the RFC, and autoipd just failed miserably. I did numerous tcpdumps and discovered that all the appropriate ARP packets were getting *sent*, but none were getting to recv_packet - until I had the patience to go get a cup of coffee and noticed a sudden burst of recv_packet activity.
Looks like poll() is still broken for BPF fds on BSD. My guess is that it only acts like there's stuff to read when the buffer is full (this is somewhat alluded to here: http://www.tcpdump.org/lists/workers/2001/05/msg00060.html, although that link suggests it should be fixed in modern BSDs).
I'm trying to find a workaround now (or "the right way for BSD").