Whatever your using right now is dumb. Predictable, Fixed length matches and you use a rolling search timer?? Like WTF. Use the predictability to equalize search times and match ups.
Matching make on fixed intervals (on the hour, half hour)
Prioritize based on the number of unmatch intervals occurrences during an event (equilize search time across all), last matched, # times faction A has faced faction B.