Hi Jeff,
I can only agree with Michael here - playbooks describe ordering of operations for a specific operational purpose and as far as I know role dependencies will not get you there in the scenario you describe.
The way I usually do this is to think of splitting my roles into two. You generally need two paths through your collections of tasks. The following broad groups can usually be combined:
1) install / start / simple reconfiguration
2) stop / remove
If you're using roles currently as a "this is what should be present in my working application" then you've currently got the first one sorted.
For example, I have a global playbook that describes the current state of my entire system that I want to enforce. I use that for the first purpose and it works very well.
I have specific playbooks for removals or stopping particular apps (with dependencies) or more complicated reconfigurations or upgrades.
You may even want to have roles called "remove_foo" or so on but its generally easier to have this in a dedicated playbook unless its something that you're doing often or that can be easily parameterised between plays (eg remove_app name=foo, remove_app name=bar).
Hope this helps.
Cheers,
Andrew