For my understanding, I can see that you have two concerns here:
1. How to structure the Sitecore project
I am a sitecore developer for more than 3 years, based on my experience, the best pratice is to create a single Sitecore project that is the highest layer of your solution
You dont need to install sitecore dlls to all project, just keep your old code as it was and turn it to the base code. For example, i just finished a project that the customer wants to move to using Sitecore,
the solution was already there, it has 4 projects:
- ABC.Web ==> highest layer
- ABC.Data ==> working with Data layer
- ABC.Services => business handling layer
- ABC.Domain ==> Common layer
We created a new project that should be install Sitecore dlls, that actually replace the ABC.Web(highest layer)that will contains all the Sitecore MVC code and didn't change any thing to old code.
From that point, we can work with with both data from the old system (by referencing the ABC.Services dlls) and from Sitecore as well.
2. How do you install the required files in production to support multiple sites?
Sitecore do support multisite by structurizing the Sitecore content tree and a litte config. You DON"T need to create separeate websites in IIS,
they are actually ONE website with different domains.In the config file named SiteDefinition.config (or you can add your own config file), you basically set a domain with a start item. Sitecore recognizes the domain that match with the one in config file and will redirect to
the start item correspondingly. Eg. In the image, i created 2 sites (essentially, they are 2 branches of sitecore content tree) with start items are (MySite1 and MySite2)
this is my config
<sites>
<site name="MySite1" patch:before="site[@name='website']"
virtualFolder="/"
physicalFolder="/"
rootPath="/sitecore/content"
startItem="/content/MySite1/home"
database="web"
domain="extranet"
allowDebug="true"
cacheHtml="true"
htmlCacheSize="50MB"
enablePreview="true"
enableWebEdit="true"
enableDebugger="true"
disableClientData="false"/>
<site name="MySite2" patch:before="site[@name='website']"
virtualFolder="/"
physicalFolder="/"
rootPath="/sitecore/content"
startItem="/content/MySite2/home"
database="web"
domain="extranet"
allowDebug="true"
cacheHtml="true"
htmlCacheSize="50MB"
enablePreview="true"
enableWebEdit="true"
enableDebugger="true"
disableClientData="false"/>
</sites>
You can reference this tutorial for more details
https://briancaos.wordpress.com/2010/03/01/working-with-multiple-sites-in-sitecore/