Password Gets Reset when executing user_save
Be sure to

unset($edit['pass']);


if you don't want to edit password. Generally creating $edit from $existing shouldn't be needed. You do not need to re-save all fields, you only put into $edit what you know you want to change. You should, usually, be able to start with empty array, without seeding it first.