You have one field (revision) in the node table and you're trying to keep tabs on two or more pieces of information. You may succeed by creating rules to keep revision number across languages to be the same, but as you point out, when reverting revision for one language you really don't know the correct revision for the other language(s).
I think we'd avoid a lot of hurt by introducing a new table translation_revision. The id in this table will replace the revision id in the node table. The new table will know which revision is current for any language.
This will for sure break BC, but in the end I think it will be the cleanest solution.