Perhaps I'm missing something, but why not down a segment (shard I guess), upgrade the application and database, then fail over to that shard?
This would provide a fail back mechanism assuming you could resolve data continuity.
I'm sure there is a reason this wasn't viable (possibly the data issue), but I was curious.