I've been trying a combination of the two where I use the QuestAlias trick to find the Actors - then I do actor.addspell to give them the 'ability' which has my script - this seems to be working but you have me worrying now, that perhaps the effect is actually applying to the alias, rather than the actor... must test further

I believe that AddSpell is safer than AddPerk (from something DukePatrick wrote) - so perhaps you should try AddSpell instead?
Also you may need to make sure you are using http://www.creationkit.com/GetActorReference_-_ReferenceAlias