Yes, it's a hard task. A brutal honest assessment. Stick with extension. Plus if things don't go right you've got that additional level of support. Fair enough if their support is bad then you could step in. But generally speaking, it's quicker to fix or adapt than create.
Don't get me wrong I enjoy creating my own extensions as I feel this helps me learn. ...
You need to create child level themes for all the stores, and make your current theme as parent.
Select each child level theme to each store
Now you don't need to copy all the files to every theme, just use different css with the same name in all the themes like styles.less or styles.css
This will use different css files for each theme. This is the way of ...
Personally I'd go website route. Could have something on cron which syncs customers between shared website. This is the least amount of change required.
If you dont want to do this the only other thing I can think to do is set a different root category for the stores you don't want to see each others basket. Then under the different store scopes start ...
I was going to suggest taking a look at the sale_sequence_profile table.
See here for more details
But essentially you are modifying suffix/prefix in addition to what's already generated.
So the answer is it can't be done. That's how magento works.