After much bashing of the old head, I found a bug in nandwrite for devices > 32MiB.
The error is in the address selection for the block erase code. To fix this for these large devices,
simply uncomment the line that reads:
*nand_byte=((sector >> 16) & 0xff);
in the nand_erase() function.
Larger cards require 3 address cycles.
In this vein I have managed to port the NAND driver from the linux-2.4.34 to a small stand alone library,
and will release it when it is a little friendlier. This will provide software ECC support,
arbitrary sized / positioned writes and some other niceness (which may, or may not be of use :))