Sorry for the really delayed reply. Thanks for all the answers. It all definitely helped in terms of direction. I've decided not to deal with writing user roles for now because of time constraints.
We've managed to get around the user role requirement by deploying an instance of limesurvey for each department. This is preferable in terms of scalability and resiliency anyway.
We're using LimeSurvey as an on-premise forms creation software for a client.
Although this is client work, they have agreed to allow us to share our customizations publicly.
The changes are in my github repo , in the formsgen branch.
All of the work is on the admin UI so far. I've tailored fit the UI (hiding/defaulting some options) to our client so it may look simplified compared with all the options available at the vanilla LimeSurvey. I've hijacked gringegreen in the process though.
Once I get to finish porting the heavily icon-based menus to bootstrap nav menus, I'll be working on improving the survey creation experience. I'm aiming for an experience as easy as Google Forms.
I just wanted to share this to the group just in case anyone is interested.