Are you sharing any content between sites, or everything separate? If the DB structure is the same for every site, you could probably get away with changing the DB connection in some middleware based on the requested hostname, or always use the same connection but change the table prefix for that connection, etc.
If it's just a matter of adding a where('site_id', '=', _something_) to every query, it'd be cool if you could just alter the query with an event listener, unfortunately I don't think there is an event that fires as a query is being prepared, there's one the fires immediately after a query has been run, but not before. :\