If you want to save the values as the defaults I think you could use the VIServer to set them as the defaults and then save the VI via the server. There have been posting here on that. I believe that the VI can't be compiled but you can compile a front end loader program that launches your vi in its native code format with the VIServer. This should be able to be accomplished transparently.
I use a loader to launch my uncompiled apps and use the VIServer to allow users to edit global variables and then save the defaults as sort of 'visual' .ini files. LV handles all the file i/o and the apps read the globals in when they run. Unfortunately I can't use some of the properties available for regular VI's like hiding the menu bar, etc. to get the l
ook I want. So recently I've been writing the apps with all my global controls on a tab control. When I'm done I paste a copy of the tab control from the global to a ghost vi with separate save and cancel buttons. I can set the properties of this ghost vi for the appearance that I want. The tab controls allow me to enumerate the controls on them only (regardless of what else is on the ghost vi's front panel) and match them by label for changing the globals accordingly. The main setup program watches for the save button depressed, hides the regular vi, enumerates the controls on it, sets the non visible global's matching controls to the same value, sets them as default, and saves the global. When the application vi's are launched by the vi server they read the globals normally. This isn't exactly what you want to do and the sychronization of the control values does rely on uniquely named controls but there are some parallels that caught my attention to your post such as the loopin
g and the labels.
While it is possible to have controls with the same label text and LV seems to differentiate between their respective local variables, etc., I think it is generally not advisable.
Good luck!