Curt, what you are doing is similar to what linuxbios was designed for. At Los Alamos in 2001, we were booting thousand node systems with linux as the "payload" (the payload name came later -- at the time, linuxbios always used linux as the payload). Note that linuxbios was renamed to coreboot, it's the same code base. We did this on powerpc, x86, and alpha. The parallels between then and now are interesting.
Our path to boot linux from "whatever" (usb, disk, network) was via bash scripts, which we bundled into the initramfs. My preferred interface for a boot menu is still the shell command line. That way, when things go wrong, you have more there than just a menu. So I'm not yet convinced, once you can put linux and initramfs in flash, that you need seabios, unless the issue is INTxx support for things like grub. But as a Plan 9 GSOC project we put Plan 9 in the boot sector, and that worked fine; I'm not convinced that at any step we need old-fashioned boot loaders at all. The kernels do just fine, in flash, in the boot sector, and over the network. But that's me ;-)
We could boot small (128) node clusters in well under a minute, including the 'linux boots linux' part of the boot; individual nodes took seconds from power on to full functioning; and medium clusters (1500 nodes) would boot in under 150 seconds from power on to all nodes usable, including all the infiniband network config and 'linux boots linux' step. As a contrast, the rom-based iPXE bootstraps were unable to finish configuring ONE interface in the time it took us to boot 1000 nodes.More here: http://lacsi.rice.edu/workspace/downloads/symposium/lacsi_2004/pap124.pdf/
My latest work involves embedding go programs as source in the flash, and compiling them on demand into a ramfs. I'll be talking about this at ELC Europe. Go programs are far more compact than even busybox binaries, and it looks like I can fit the go compilers, all packages, and all the programs into about 8M in flash as part of a linux payload. I've got a ways to go but so far I have not seen any showstoppers. That code is all available on github if you're interested. Once you get a real kernel in your boot path, life can get very interesting.
Have you considered using the payload chooser (bayou) to let you choose linux as the payload or seabios? Then you would not need to have seabios boot linux from flash. Life might be simpler. Bayou can be made to work again -- I did it recently, even for ARM -- and it is kind of handy.
My interest is purely in getting back to the linuxbios scenario -- the only payload being linux.
The ONIE thing is just what I've been looking for for the Go project; I'll be taking a close look.
ron