I pulled more than a little hair out trying to figure out how to have two sets of Views directories for one installation. I then pulled out most of what was left trying to figure out how to get a website to know what domain was running from Application_Start.
After poking around on StackOverflow for a while I saw the magic words "Virtual Directories" and my problems were solved. Now the basic website install just has a \bin directory. The \Content, \Views, and \Scripts directories are virtual, pointing in different places for the two different sites. When a site starts up it does a Server.MapPath("/Content") and examines the path. Based on that, it knows what site is running.
With that, the rest of the port was straightforward. I was gratified that my preliminary work meant I had to do very little replumbing. My two sites have differently formatted paths, so there's a brand-new Routes table that I read at startup. Unshelved.com also has to deal with a bunch of legacy URLs, easily handled with a few new controllers that do the appropriate lookups and redirects. Most of my time, frankly, was spent copying data from the old database to the new, just slightly-differently structured database.
Unshelved.com is now up and running on the same server as Not Invented Here. I still have lots of features to port over - Search, the Store, Pimp My Bookcart, and a host of little things. But suddenly I'm down from two codebases to one, and it's a huge relief.