I've always thought that these people need to be "marked" at protests.  Give people who disrupt peacefully protests a quick blast of pink spray paint or something so the entire crowd can identify and disavow the shills.