But is there a way to get the original selection back?
no, I don't think so.
Basically the Selection tag reacts to MSG_POINTS_CHANGED and MSG_POLYGONS_CHANGED, in the end adding or removing the needed amount of points or polygons in the selection array. But there's no information, what to do with for example additional points. And so it heavily depends on where the new points/polygons are added and also which tool does so, what the outcome for those selected entities will be.
Something that will probably be addressed in future with the CustomDataTag introduced in R20.