A few potential problems I see with the overall structure:
1. Your "Wheel Distance" VI's are both inside of a while loop. They will be constantly updating, so the drive motors will never actually reach their goal of 50cm.
2. There is no wait timer in the while loop. You may want to add one to avoid any potential cRIO lag issues.
3. You are writing to the drive motors in 3 separate places that I can see. This is generally not a good idea, as LabVIEW gets confused pretty quick if multiple VI's are giving commands to the same motor.
Number 3 is what is most likely causing the problem. Here is some code that should do what you want:
http://i.imgur.com/R1Ukf8Y.png
Instead of your custom VI, I just created a case structure as a placeholder. It works on the same principle as yours, except there is no need to add the 50cm and then subtract off. Simply reset the encoders using the "Reset Encoder" global variable *before* you enter the while loop/first case, and that way you can be sure they will start at 0. It advances to the next case if both encoders have reached 50cm.