If you don't feel someone belongs on the list as a rival, just ignore them.
You mentioned not to use opinions, so I tried to be as objective as possible. I used criteria of Type, coverage, AI, expected level and available counters for the first list.
For the second list, I made all 58 of the teams for the 23 NPCs (as some have 3 teams at their highest potential, N has 4 and Trace has 2, HOP HAS 6 TEAMS!!!). With the magic of AIs, I had them do simulated battle down the list to get the data needed.
Based on their game only
Akari/Rei
Trace
Marnie
Cheren
Avery
Klara
Bede
Trevor
Bianca
Hugh
Hau
Shauna
Tierno
Barry
Calem/Serena
Gladion
Hop
Nemona
Wally
N
May/Brandon
Silver
Blue
Based on Trainer vs Trainer with their Strongest Teams
Shauna
Trevor
Tierno
May/Brendon
Akari/Rei
Silver
Klara
Avery
Bianca
Cheren
Hugh
Trace
Serena/Calem
Gladion
Bede
Marnie
Blue
Hau
N
Nemona
Hop
Wally
Barry
Edit: Made a LOT of changes and added a second list. Also, thanks, sumwun for noting the list was originally reversed
Spreadsheet
Trivia:
- Barry had a 100% win rate after the 5 battle gauntlet, so I decided to run his teams through to see how long until he got a loss. It was eventually Hop that got him.
- There was a 3 way tie between Shauna, Trevor and Tierno, and the only trainers they defeated were each other, so I had to expand the battles to break the tie.
- Silver lost the most battles to teams with less Pokémon than his own.
- Klara and Avery lost the most battles to trainers with a lower average level than their own team (though each of these teams also had more Pokémon than their teams as well).
- Blue lost the most battles to teams that had a lower average level and the same number of Pokémon than his own.
- Hop performed the best regarding defeating teams that had higher levels than his own
- The difference between Wally and Hop was 2 battles, and they would have tied if Hop beat Wally just one more time.