If you had just been using the role provider framework, this would be easy as you could use the ADFS membership provider with your existing database role provider. You would probably want to go in that direction if you don't want the role data to come from the federation server.
Generally speaking though, it is a better model to try to get the FS to send you the role claims. If you don't, your database needs to "know" about all the users to assign them roles. In the pure federation model, you don't necessarily "know" who all the users are in advance.
The bottom line here is that there are lots of options to solve this, but implementing a custom role provider is probably the best way for you to go because you can write that against your existing role store. Then, in the future if you want to use ADFS for the role data, you can just switch to its role provider.
With Geneva in the future, you could potentially have the Geneva server generate dynamic group claims for you by querying your database store directly if you wanted to.