How can I get user_save() to update the nid instead of creating a vid?
Instead of creating a new object, you should simply update the node object you already seem to have (or load it first with node_load()), update it's properies and then save it.

Trying to save a node object that doesn't have all properties set will result in loosing those that aren't set and other issues like the one you're experiencing.