Ok, after some tweaking, I got my script running. My active software is in PRG0, so I put the MortScript files from Condi's HackMode into \USER\PRG1\APL: Av.exe, commctr1.dll, coredl1.dll, killproc.exe, MortScript.exe, toolhel1.dll. Then I created the following Av.mscr in the same folder:
# VR database rebuilder script
ErrorLevel("warn")
Delete("\NAND\RW\VBT\EN\EN_US\FINISH.db")
Run("\NAND\PRG0\APL\Av.exe")
Exit
Finally, I added PRG.FLG into \USER. The VR database rebuilds every time now.
I tried my alternate idea of copying a known working copy of the VR database every boot, but it didn't work - the VR stopped working immediately. I had assumed VBTEngine.exe was launched by Av.exe, but perhaps it is launched by something else (HMIManager.exe?) and therefore it doesn't like me replacing the files while it's running.
I also learned some interesting things in this process - I wondered why Condi used the second PRG folder for HackMode instead of just renaming Av.exe in the same folder. So I tried just renaming Av.exe to Av1.exe and having the script call it, but Av1.exe would hang during boot. So I put (Pioneer's) Av.exe in a subfolder, but the same result - the system hangs during boot. So apparently (Pioneer's) Av.exe must exist with that name in either PRG0 or PRG1 - it won't work from any other directory or any other name.
Another interesting thing I stumbed upon is the infamous "There is no applicable program" message during boot. When I put Mortscript in PRG1, this message started appearing. I thought about why simply changing from PRG0 to PRG1 would make any difference, and I realized that the OS images in PRG1 were older than PRG0. So basically I was booting an older Windows image (PRG1), and then trying to run Pioneer's Av.exe which was designed for a newer image (PRG0). I suspect Condi never saw this because by coincidence he had the same software in both PRG0 and PRG1, or at least very similar. In my case I had the AVIC-X940 firmware in PRG0 and AVIC-X920 firmware in PRG1. The solution was simple - delete PRG1 and then make a copy of PRG0 and name it PRG1 - this fixed the problem. Now the OS image is the same in both PRG0 and PRG1 and only the application (Av.exe) is different.
As a side project I thought about the bug where the XM station logos don't apppear sometimes after boot. I thought that maybe Av.exe is loading before the P920XM tuner has a chance to gather all the station data. To test this theory, I added a 20 second delay to the script to give the XM tuner plenty of time to gather everything. Unfortunately this made no difference, so I guess it is not a race condition with Av.exe.