Giving panhandlers money just encourages the practice further, which leads to the continued harassment of pedestrians, motorists, and businesses. Clearly trying to penalize these people has had no impact, so why not start handing out fines to people who give panhandlers money?
Make it a bylaw with something like a $50 fine. As the odd person is fined in this way, word of mouth will spread and (hopefully) less people will continue to fund this shit. Honestly, just do SOMETHING. It's unreal how much worse it is here than every other major Canadian city I've visited.