I was actually planning to change divine units to use Divine I and Divine II instead of Divine and Channeling II and III, so that Govannon-trained Amurite priests wouldn't be such powerful archmages. That would stop the effect from costing them their spells.
Still, it is possible that a python call that must cycle though all the promotions of every unit in the game could be hard on some machines. It might be better to limit it to just arcane units.
Did you mean just channeling or spell spheres too? Only checking for these 3 promotions wouldn't be as hard on the hardware as checking for 57 promotions, but it would also mean that only adept spells are actually lost, while mages and archmages simply stop being able to gain access to new spells.
Also, arcane units would gain all their abilities back upon upgrading.