Create you own select popup which should contain a dataview with nested datagrid (datagrid B)) and open it by using a microflow button in the reference selector. The enclosing dataview object in which reference selecotor is nested, should be passed to this microflow.
On popup datagrid create a microflow button(select) which passes your entity(enclosing dataview) and the entity you want to associate (datagrid object). In this microflow you can add a check for the number of associated userroles and actually create the association.
You could also create an enumeration with your userroles and an on-change microflow, adding the selected userrole and removing the others.
This way you avoid having to use a select form and don't suggest to the user that it is possible to add more then 1 userrole (since he can only select 1 option at a time)