Performance degrades because Rangy has to remove and recreate all existing highlights whenever a new highlight is created. This inefficiency is one reason why the highlighter module has never been included as an official Rangy module.
I'm working on a different, character offset-based approach that may improve performance, so there is hope.