maybe I wasn't precise enough.
It took me some time to get behind this bug. But really: It is your SQL statement, especially the order by clause. It does not see more than one blog entry with an identical registration timestamp.
Additionally after long search I found a big logic bug with the deactivation:
There is no way to call the deactivating functions of a plugin in an ajax call AFTER deactivating the plugin network wide. The plugin is then simply no more in the list to be included in wp-settings.
Maybe it might work to do the network wide deactivation on 'done'-status and skip it before. I'm testing around and your ideas are welcome.
Anyway, I appreciate your work. Thanks a lot!