The problem turns out to be the fact that vm-vars.el has defconst's, which redefine the values that might be defined previously. So, if any of these defconst's are loaded in the middle of a VM session then all the changes that might have been made by addon libraries are liable to be lost.
If the addons are moved to the contrib directory, this will at least make it clear that addons have to be treated specially.
The problem turns out to be the fact that vm-vars.el has defconst's, which redefine the values that might be defined previously. So, if any of these defconst's are loaded in the middle of a VM session then all the changes that might have been made by addon libraries are liable to be lost.
If the addons are moved to the contrib directory, this will at least make it clear that addons have to be treated specially.