I do this using custom properties because I agree they are not all created equally. For instance we use several multilink circuits in our environment so I tagged the aggregates as WAN_Interface and then filtered some of our views. The reason for this is if I had 3 T1s on an router that made up 1 multilink interface if they were overutilized I would end up with 4 interfaces in alert, so I filtered on the WAN_Interface condition.
Furthermore it would be awesome to maybe there be say, just built in check-boxes or radio buttons to use. And on top of that maybe some just basic logic auto selects what type of interface it is. This could be based on say interface description or name. IE anything containing the words "Host or workstation" in the name could be tagged as host ports. Anything with "Server" would be a server host port and uplinks could be recognized by simply "uplink" or something similar.
As for your automated selection I don't know about that but one way you could accomplish that would be with a SQL query. You could do this in two ways. First you would need to create the custom properties you mention, Router, uplink, etc. Then you would need to write a report looking for all interface captions of "Uplink" that didn't have the Uplink custom property set as true. That would allow you to go and target which interfaces needed correcting.
If you are brave and comfortable in SQL you could write a query that could automate this for you (I have done similar tasks in the past) but I am always wary of doing it in this fashion.
Once you have your conditions set then of course you can do whatever filtering or separate alerting you require.
The entire point is that it is EASY for ANYONE to do and that it is just there from the get go.
I speak of new functions or ideas not just to solve my own problems with layer upon layer of manual customization but I try to think of how it could benefit the product as ultimately that benefits me.