@eureka:
that's pretty much what I have looked into as well. If you comment out the
#define CONFIG_IRAM_BOOT 1 line, you essentially take away all DRAM initialization, so the uboot image will only run correctly if the DRAM had been configured before running uboot (because it will [at least] try to write the kernel to 0x70800000), and it will (rightfully) just crash, because the memory isn't accessible.
The question that remains is why the DRAM, if it has been initialized before uboot, is not seen unaltered within uboot. There probably is some other (in this case, unwanted) magic happening between initialization and use - but where? Maybe we'll know better once we understand the relocation stuff...
(and yes, maybe avoiding u-boot altogether could be a solution. Then again, u-boot contains all the device-specific initialization that is needed to even make a Kindle come alive at all, so dropping u-boot for something custom is probably not a good idea

)