Rubberband selection calls GoView.SelectInRectangle, which creates a collection of all the objects in the selection box, then calls GoSelection.AddRange(collection).
The Primary selection is the first object in that collection. I think your easiest hook here is to create a custom GoSelection class and override AddRange to re-arrange the collection before calling base.AddRange.
Then set the view’s Selection to be your new Selection class.