(resolved, just posted for anyone who might run into this kind of issue in the future)
So, this is weird, and hasn't happened to me before. I'm running RS without a license, just to do RAPID editing. I tried creating a virtual controller from a real robot backup (something I've done before without problems), to do some offline RAPID editing while the robot was in use, and had some weird things happen. RS didn't throw any obvious errors during the build, but when the virtual controller booted, it had certain program Modules missing, and several System modules that had been "reverted" to factory-standard, missing any of the variable settings I had changed.
I eventually tracked it down, but it wasn't easy, or obvious. First off, I found there were error messages during the build, but they scrolled up out of the message window too fast to notice easily, and there were no pop-ups or obvious warnings.
Now, the robot was running RW 6.13, and my RS only had RW 6.12. So I fixed that, and rebuilt. But that didn't change anything -- same messages. So I dug further.
This robot is using the UAF framework from ABB, and I did have some minor version differences (like, 1.00.01 vs 1.00.02 minor), but the Create screen, where all the dependencies are shown, never showed any warnings or errors. But, what the heck, I don't have any better ideas. So, I updated every UAF option I could lay my hands on in RS, rebuilt the virtual controller, and... ta-da! It all worked.
Now, I was not able to get hold of the exact UAF versions that the robot had -- in some cases, my RS is ahead, in others it's still behind (but only slightly). And I didn't try upgrading and rebuilding one UAF package at a time, so I don't know which UAF option was causing the issue. But it works.
So, the lesson: always scroll back up through the message list looking for the red icons. B/c RS won't always warn you where you would expect it to. And always check your Add-In versions against the real robot (BACKINFO.TXT in the robot backup will list the version numbers).