Since some network cards are slow, and we don't want to wait for 'em, I separated the dhcp portion out. In that separate, backgrounded script, we first wait for all devices, and then do the dhcp loop. All in another thread from the main, to keep the boot fast for all.
See separated-dhcp.tgz in storage.