It has been that way a long time however now around Memphis we are seeing a lot of all ball foul ( like snooker ) and no balls count on break
I've been suggesting an in between option, that I personally think would work as well as anything when you are not playing with a referee. It is what I call "All ball fouls with one-touch warning"
If you "foul" a single ball prior to shooting, it would be a warning only. At that point your opponent might want to call someone to watch. Because if you touch again, that would be a foul.
If you touch after you have released your shot, that would be a foul even the first time.
But close calls that might have touched but didn't clearly move a ball, would not be a foul unless the opponent had asked a ref (or someone else neutral asked to watch), and they called it a foul. For opponent's to call a foul it should obvious enough that both players agree.