I've been thinking, and playing a fun game recently, and hit upon an idea that may work for Topaz:

Ya know how whenever you throw a Pokeball and if it fails, it essentially disappears into the void? Well, why not make it so that the balls are re-useable in game, instead of disappearing after every failed attempt? It would waste less money in-game, more than likely wouldn't take up any more code than making them disappear, and would cause a lot less frustrations.

Or, at the very least, to make it not so OP, you could make them disappear in battle upon use, then get them back after the battle.

Or maybe have an item that gives you a chance of recovering used Pokeballs, if held by the lead Pokemon. It would certainly help your wallet early game, or when hunting for a specific, hard to find Pokemon.