Gotcha, I think. The issue is you rely mainly on ID. And you also rely mainly on the "Add to the database players in the current tournament" feature. And the problem is that feature doesn't recognize a player already in the database based on ID, it only recognizes similar players based on Nickname or First name + Last name combination. So if a player with the same ID is added, and the operator accidentally misspells or mistypes the player's name, then the program doesn't alert you that the player might already be in the database. If that feature recognized the same ID, your situation would be ... easier. Is this correct?
So, what I have done is overhaul the whole "try to identify similar players" code. It's centralized in one place now, and any feature in the program that needs this functionality now uses the same code. There are a number of places that use this, including: importing players into a tournament, importing players into the database, and adding players to the database from the current tournament. They all need to identify similar players based on Nickname, First name + Last name combination, and ID. And since they all now use the same code, now they all do recognize similar players based on ID.
I hope this is what you were looking for. Even if not, it's good code refactoring.