I think, a good start would be, to enable people giving their team mates as well as their opponents “stars”, whereby much stars mean “made fun to play with” and no stars mean “do not want to play with/against this one again”. The matchmaking should respect to some extent - just to some extent, as you should encounter new players from time to time.
Another idea would be to primarily put together people with the same skill level, which either can be determined roughly by experience points or by how much predator damage they make in the average or by how often they win/loose or or or…
It should not be to hard to develop a simple algorithm doing well…
But on the other hand, it should not be too hard to program settings data structures, which do not crash constantly either…
So, do not put too much hope in our ideas:)