Nasty problem. Lesson learnt.
I could not figure out why I was seeing this error, clearselection, setting index -1 etc, nothing worked when trying to set a dropdownlist selected value from code behind.
Turns out it was because I was adding a ListItem to multiple dropdownlists without instantiating a new one for each dropdownlist. This caused all the problems I was seeing.
For every Dropdownlist, create a new instance of the ListItem object before adding it – do not share it accross controls.