A lot of what you describe is very project specific, client lists etc. We currently support 2 scenarios, one where sites are completely independent and have different users and roles, and then we have related sites mode where all sites share the same users and roles.
I think in your scenario you could implement some logic to synchronize users and roles across client specific sites. You can keep all extra data in your own tables linked by SiteID or SiteGuid.
Note that things are quite different depending on whether using folder based child sites or host name based sites. One of the challenges of host named based sites is creating the needed DNS records on demand. My planned feature will work out of the box with folder based sites but for host name based sites it will expose events where its possible to hook in other supporting functions so that host names could be provisioned by some external web service.
Do as much as you can to keep your code in your own projects, if you bump into things that make you think you need to modify mojoPortal code then post specific questions and maybe I can recommend a strategy that requires no changes to mojoPortal code or maybe I will consider small changes that make it easier to support your needs. Its a case by case judgement.
I noticed that you are in NC, I'm in Charlotte myself.