The reason its's probably not working is that joints rotate, they don't translate. I think this is what you're supposed to do... create a couple of locators. put them into the hierarchy, posistioned where you want the hands to be (more or less). Then, point constrain either whatever control curves you're using, or the iks, to these locators (but not parent constrain them). This should keep the distances correct, but keep the ik handles from behaving oddly during rotations. So, when the constraint is at or near 1, the hands will be snapped to the shoulders (minus whatever offset you give them), and at or near 0, the constraint will have no effect, allowing you to make other keys.
As for right and left arms moving differently.... its probably due to the idiosyncracies of the ikSolver.... you have to rotate the arm over 180 degrees. This shouldn't be as bad as it sounds, due to the fact that you'd need to be able to make these adjustments during normal charachter animation anyways. Although you may need to give yourself more control surfaces....