Since each LUIS model is limited to 20 intents and 10 entities, and also each model must have a well defined scope/domain, I\'m wondering what\'s the best way to implement m
So, from the technical standpoint there isn't any major issue with that. You just register two LUIS apps and have two dialogs in your app with the LUIS keys of the specific app you created.
I guess your question is going more to "how do I redirect the message to the corresponding LUIS bot". And it's valid question.
The AzureBot has a similar scenario and they resolved it using a DialogFactory that follows an strategy pattern. Each 'domain' dialog knows if the incoming message is something they can handle or not (this is the one for Virtual Machine operations). Here you can see how in their RootDialog they also have LUIS and how in the None/Empty intent they are redirecting the message to the corresponding dialog.
Another alternative to explore in this space, is using a IScorable interface, which, long story short, will basically allow you to intercept all the messages and decide what to do. The ContosoFlowers sample has a IScorable implementation for you to take a look at. The C# BotBuilder library has also the DeleteProfileScorable, that basically handle the /deleteprofile message.