There are some databases maintained by the main story scripts that could be helpful.
EvilDude - contains all 'Evil' characters. These are defined at game initialization by those with a relation to Arhu of < 25. It can be added to at anytime.
IsStoryNPC - is a database containing what I think are protected characters (uses call CharacterMakeStoryNpc)
The query CharacterGetAttitudeTowardsPlayer might also be useful, not sure its difference to CharacterGetRelationToCharacter but they are different