I've actually floated a possible practical solution here, one time, but I didn't get any takers.
I think the controversial speaker should be in an auditorium, with whatever audience wants to go hear him or her.
Then, there should be a second auditorium where the speech is projected on a big screen, but where students in the audience can post onto the screen refutations (pop-up video style, from their cellphones, say) of the claims made in the speech.
The speaker gets to speak. The people who simply want to hear him get to hear him. The people who find him reprehensible get a "safe space," but in that safe space, they are engaging with the "ideas," such as they are, in the controversial speaker's speech. The total record of the speech is the speech plus all the refutations. If the refutations are stronger than the claims (i.e. link to supporting studies), then the speaker is defeated.