So, I've been thinking about this problem a lot. Here's how I see it:
1) At least one of the filesystems is [language edit]. It sounds like (at least) the filesystem with the backup kernel.
2) I'm guessing it's the recovery kernel because the device DOES boot.
3) ADB works.
4) Trying to reflash doesn't work because it's trying to boot from the recovery kernel.
5) I've been digging through update.zip and it absolutely does rewrite the whole damn thing, so it shouldn't have any problem fixing any existing software problems if it can get a shot at running.
6) There's options in update.sh that indicate it can be run from the device, something probably like:
update.sh user /sdcard/update.zip
6) In /bin/ there exists updater.
So, you should be update WHILE in the OS, using the procedure that was originally designed for updating. You just need to dig through all the source code to figure out how to properly call it.