I have done this using Web Services / Java applying it to Team Member assignments for Opportunity. It would be a 90% plus fit that would have to be modified to apply to SRs. The rules are configurable by users as the rules are stored in a custom object in CRM On Demand. It is pretty slick and has been in production for about a year. It is a high volume client in a multi-tenent environment.
You can write any rules that you want and the most used rules are the ones that balance work load across users that have the same role (round robin assignments). There are other rules that assign by availability based on the calendar, shifts, skills, etc. the sky is the limit.
To create a new rule type requires writing a new method in java and adding the rule to the custom object. It is very flexible and extendable. The customer that is using it is extremely pleased with it.