Edit old revision without changing the current revision
I'm afraid that not even _node_save_revision allows that. Revisions were designed to keep old stuff archived and unchanged. Of course sometimes we need to violate that principle for the sake of moderation.

You will have to smartly adapt piece from above function:

$node-&gt;uid = $uid; // Make sure revision's author stays unchanged
drupal_write_record('node_revision', $node, $update);


I don't have time to experiment with it, but I'm sure you will find out pretty easily. 

Carefully consider if you want to also call

module_invoke_all('node_presave', $node);
module_invoke_all('entity_presave', $node, 'node');


before save, and

module_invoke_all('node_' . $op, $node);
module_invoke_all('entity_' . $op, $node, 'node');


after save. Probably you don't, but it depends - some modules may use revision data for search or other purposes.

Last but not least: I must admit I have no idea how field_attach_update handles field revisions.