the only way to do this is to have individual boot loaders for each OS
Ubuntu and XP work cause linux doesnt put a chek for this in the bootloader
if u want vista and XP to be able to hiberbate and still let the other boot then u need to 'make active'(so that individual boot loaders are installed) the partition to which u r installing vista/xp while installing and then make active(if both OS on same hdd) that OS partition or choose hdd(in case OS on diff hdd) from bios as 1st priority to boot into it even of the other is hibernated
The reason u should not do this is because when u hiberbate all system memory and refrences are saved so if u were to boot into another OS and u delete/modify some files(s)(or any disk structure) and then go back to the hibernated OS the system could become instable if a program was using those files/disk
or u could also use a thirdparty bootloader, basically various windows installations should not be aware of each other
also linux and windows let each other alone is because these systems are totally different and cannot(generally speaking) use each others data.. so they cant currupt each other
cheers