Given that facts (after some common initial processing) fall into two or more classes that should be processed with significantly different (although not necessarily disjoint) sets of rules and also given that the fact and/or rule number is prohibitive for processing according to the simple design pattern of throwing it all into one basket:--

Why not create two (or more) different rule bases and spawn a session from each? Initial processing could be done with an additional (simple) engine, with the other sessions being provided via some global, as a service, ready to accept the classified facts.

True, there will be some overhead, but it's a clean solution, doesn't mess up the rules with control facts and you get exactly those rules to work on your facts you put into the different K-bases.

-W