Hi,
this is not supported by PDF format.
You can add an highlight and remove it completely using annot.RemoveFromPage()
Using another PDFSetSelect() with a different colour will created another annotation on top of the existing one. I suggest you not to add another highlight but using the coordinate rect of the second PDFSetSelect() try to modify the rect of the first highlight annot.
After your calculation you can modify the first highlight using annot.SetRect(float, float, float, float)
You can also save the start and end char index, when you do the second highlight between these index, you compare "in not" the new indexes with the old ones and you split the highlights, something like that :
id_start_1; id_end_1 + id_start_2; id_end_2
id_start_1 < id_start_2 < id_end_2 < id_end_1
The new highlights will be :
id_start_1; id_start_2
id_end_2; id_end_1
If you add another highlight you will use the same logic.