To start, I would suggest having two under-the-hood automatch queues. One would be for free players (base only) and the other one would be for players who have purchased at least one set. This is an arbitrary distinction and could be changed (e.g. at least two sets instead); the point is that it encourages buying at least one set.
In a pinch, the "customer" queue should be able to pull from the "free" queue. This ensures that the player base isn't fully fractured, but more importantly it makes it easier to find a proper match.
The actual way to mix sets within the "customer" queue doesn't matter that much, IMO. Pool the sets. Randomly choose a "host", or arbitrarily choose the player with more sets. Not a big deal. I would actually suggest a mix of all this, I think -- a weighted chance of either player being the host, but also a chance of mixing players' sets. That way, people with few sets have a decent chance of getting a taste of other sets but there is still an incentive to buy all sets.
One downside is that people with many or all sets might have to play in some games that use fewer sets than they've purchased, if they miss out on being the "host" or having a pooled game. An easy fix is to add an additional option to matchmaking -- "opponents must own at least X sets", where X is a number or maybe even specific named sets, and it is constrained by what you own. So if you own all the sets, you could guarantee an "all the sets" game, or you could relax the standards slightly to get games with people with at least 4 sets, or at least the same sets you own.
And they can still do hosting/joining, of course.