I, personally, think you are going about this the wrong way by creating a role for each module. That sounds like much more work than it needs to be.
I'm making the assumption that your goal is to allow users to select what modules to display and what ones to not display.
This, to me, sounds like a good use of the collapse function of containers, the little + on the upper right; BUT I do understand kinda 'blocking' the module from loading, ect.
This is me quickly brainstroming (basically as I write) but I think I would add an option for each module you want them to have enable/disable access to with the options (Show, Hide, Remove). Show will show the module, Hide will hide everything in the module except the options, remove will hide everything including the options.
Store their selection in a cookie and on the modules Page_Load have it check for the cookie and act appropriately. This way you don't have to deal with roles, the module won't take up much processing so it won't slow the page noticibly. If you wrap everything (except the options) in a panel and set the visibility to false to hide the module, none of that module HTML will be sent to the user, ect.
I would suggest creating the cookies using some form of TabID and using ModuleID for the modules in the cookie. This way you could make a seperate module to place on the page that will check for TabID cookie and have the options for the modules there as well, or instead. Since you want to give your users a way to return Removed items without deleting all their cookies.
Additionally, you might want to check into using the database to store these options so they persist across computers. Same principle, but stored serverside instead of client side.