All of my ideas revolve around transparency of the process so all parties know what the situation really is. A simple solution would be to have all offers be third party verified. Obviously agents might try to tamper with the situation, but if you had some clear cut penalties for tampering (ie. lose your ability to represent all clients for at least a year) it would be less likely.
Another idea would be to have all parties present their offers and have the ability to match or adjust their offer. If the player takes your offer, then the deal is done. If a player wants to take less money or years to play for a certain organization, then so be it. At least they know what the real situation is instead of relying on their less than honest agent.
Now both of these ideas may make having an agent completely unnecessary, but as far as I'm concerned that's okay.