I hacked up something like this a couple of years back. The result was a system where I could install any FreeBSD version on any netboot-capable machine in a couple of minutes.
dhcpd first: it seems a bit like a hack to build extra fields onto the DHCP message, but DHCP is really the only sensible way to distribute “boot from here” information. Typing the correct incantations in the dhcpd config file is a separate tutorial worthy.
Since the possibilities of the FreeBSD non-interactive installscript really sucked and were entirely inadequate for my needs, I ended up creating a full distribution (make distribution) beforehand, opening as a chroot and installing any ports, and making all relevant changes to configuration files, and then archiving the distribution files on my file server. The archive would then contain a tarball for every FreeBSD version + configuration combination I needed.
I then pointed the pxeloader at a stripped-down ramdisk FreeBSD installation with the sole task of running a custom rc.local script which would format the harddisk, fetch the distribution tarball from the file server via NFS and write the tarball to the disk. For my lightweight distribution this took ca. 2 minutes, MUCH faster than running through a traditional non-interactive install process. The rc.local script contained the logic to select the the correct distribution (version + config) on the file server, although I had to change the script when I wanted another version (unless I always wanted HEAD). The config was chosen automatically based on the MAC address of the machine.
I ended up setting up a TFTP server only for the ramdisk installation. It would be really nice if the pxeloader supported fetching via HTTP too, in addition to NFS and TFTP.
As these were throw-away installations intended to run tests, I needed to also be able to nuke the installation and install a new version automatically. I did this by setting the harddisk as primary boot option in the BIOS and netboot as second option. When I needed to reinstall the machine, I just nuked the MBR and let the machine reboot.
If you find the time for your project, consider hacking up an easy way of creating custom, fully-functional distributions fast on a build machine. Something like NanoBSD. The installation process would then only involve creating a ramdisk-based FreeBSD distribution and writing a simple rc.local installation script that prepares the system disk, selects a distribution based on some logic and pipes the files to the disk.