Hi Troy,
Yikes!
Independent Move commands are ignored if issued while in Feedhold. Maybe a better solution would be to check if in Feedhold (CS0_StoppingState != 0) and handle it appropriately. Either display an error or wait for Feedhold to be released before commanding the Move.
To check if the encoder indicates Z is actually in the correct position compare ch2->Position to the desired position +/- some tolerance, as it may never be at exactly the correct position. Of course this method only works if you have encoder feedback.