Overwriting the kernel on sda1 would not pick up the root file system on your external SD (sdb2).
If you have a jtag, this method might work, though I haven't tried it (labelling sdb of course):
Concerning the device order problem (/sda/sdb/sdc/sdd), it seems that there is a workaround: using a disk label.
Set up a label with the e2label command (ie: e2label /dev/sda bootdisk), then, at the boot prompt, add the following parameter: root=LABEL=bootdisk
Otherwise, the simplest solution is to use a micro SD card and put it inside.