Sounds like it will result in too much procedural coupling to be useful.
I advise the use of a case like statement (since JASS does not support this, use a multiple if then elseif then... else endif statement with a script block representing each case. GUI can do something like this with nested if blocks but this results in less optimized and readable code.
This way you can have 1 trigger control the decisions for all hero types saving on the extra trigger and event overhead.
To prevent procedural coupling with discerning the prime attribute, I would advise using a variable to cache the decision and have a trigger decide the moment the moment the AI chooses the hero. This would mean it only gets evaluated once and you can then use a much simpler value to evaluate with. An example would be 1 = strength, 2 = agility and 3 = intelligence. You could then tell if a hero is intelligence based simply by testing if its prime attribute value == 3.
If you do not want to cache the results, you could write a function which does all the decision logic and returns such an integer. In any case the idea is to move the decision logic into one place which you then reference instead of duplicating it everywhere. This not only can make triggering faster as you have to create less duplicate script / actions each time but also results in smaller script and reduces chances of a copying error occurring.