Discovered two bugs in the code.
The first was that the lastMatchedPattern and failedPatternList were not properly filled or used. The second was more substantial and effected code performance.
The lookup table the code uses to quickly grab data for each of the candidate spokes (_pair_id_array) was filled incorrectly. Specifically the lower triangular portion of the matrix (which is filled on line 130) was, instead of being filled with the first id of the pair, filled with the second id of the pair. This resulted in half the data being unusable and degraded performance (I ran some CFHT data I had previously and noticed significantly more failures.) The performance has now ben restored with this fix.
Created new ticket branch and started search for bugs in the code.