No really ... kernel is still loaded from onboard flash but root is fylesystem is passed as a kernel parameter (and can be any one of the devices you said Meanie)
.
See
Sash's blog fore more details.
If this is what you want you might not even need a different kernel .... at least for SD/MMC; I already had beta4 with root on an ext3 partition of my SD (have not tested CF but I think it might have gotten fixed meantime since Shash's blog posting).
What loads the kernel to default load address is this:
nand read.logical 0xa0800000 0x005a0000 0x00160000
and what sets the boot parameters is this:
setenv bootargs console=ttyS0,115200 console=tty1 root=/dev/mtdblock2 \ rootfstype=jffs2
What I want to do is load an alternative kernel from the SD/MMC instead of the one from onboard flash.
A possible application for this would be allways having a working pdaXrom installed on the onboard flash and being able to test kernels without making the PDA unusable till you reflash a working kernel.
It might even be possible to have some other rom installed on SD/MMC (I like to keep the CF slot free for wifi/bluetooth/gps).