I haven't dug into this enough yet to know if this will work but it could be worth a shot.
Could you override the getTable method in the model and have it return the correct table name.
For example could you have a middleware that sticks the domain in the session or get the domain off of the request and do something like:
public function getTable()
{
return request()->get('domain');
//or
// return session('domain');
}
Let me know if that works for you please (or if you find another solution). I am actually about to start a multi-tenant project so your exact problem is something I have been mulling over.