I was actually looking for a similar solution myself (but for roles, users would be too granular)... I think the best thing to do (for my situation) would be to share the duplicate views (those which will be viewed by multiple roles) on a global permission level.
Then create your unique landing views and share them globally as well.
Then create multiple Apps for each role, and then modify the default.xml under the navigation for each app as per requirements. This would reduce the amount of changes that need to be made to common views.
Then under roles and permissions you can set the default App for that role to App "X" (where X is the App created for that role). About hack-happy but it is the simplest way to achieve this, that I can see... unless someone knows a better way, perhaps through an App's meta files...