I'll bite and assume you aren't a troll. The first issue with your "solution" is that it clearly still doesn't solve the problem, so it's not really a solution. The current rule and your suggestion are both flawed.
The difference is that yours encourages cheating and confrontation. With the current rule, if a player blatantly fouls, but insists he didn't, he gets away with it, which is wrong, but the incident is then over. The opponent is now aware that the player will likely do this again if he fouls, so the opponent will be careful to call a referee over in the future.
The important difference with your suggestion, is that you are allowing players to easily escalate the situation into further cheating and confrontation, which is never good for the game, and will never end well for anybody.
Other than these obvious issues, it's just common sense. There's a conflict of interest in both cases, but with yours it's on every single shot where your opponent gets to be the referee, and with the current rule it's only an issue on shots that result in a foul when a referee isn't watching.