"Reinitialize to defaults" is not the same as "rebooting" (for lack of a better term) a VI. While the controls will get reset, data contained in uninitialized shift registers will remain.
Maybe you can explain to us what you are trying to achieve with this. (e.g.: Free up accumulated memory storage because your arrays grow without bounds?)
Typically, there is no need to restart a VI. Why don't you just place another giant while loop around the all the code in your toplevel VI. Once your main code finishes by ending the main inner loop using the restart button, the outer loop will run everything from the beginning. You can even initialize shift registers to a known state.