I've managed to resolve this, but do not understand what caused the problem.
Initially I found the XP VM did not have the hibernation option set, however changing this made no difference, and the working XP VM also had this off. (They were both cloned from the same source VM)
I then shut the VM down from windows, and on the host renamed the directory XPvmem.lck to XPvmem.lck.old, and XP.vmsd to XP.vmsd.old. The VM then started ok, I suspended it and started it again and it worked. The suspend also seemed a lot quicker tha t was.