wp_insert_post() inside save_post(): force WP to not update global post object?

I don’t have time to thoroughly test this (and your code is not of the complete class anyway), so understand that there is a lot of guessing to this answer, but save_post will run again when you call wp_insert_post. I think it may be that second run that is causing the problem. If so, you should be able to avoid the issue by having your callback remove itself from the save _post hook.

add_action('save_post', array($this, 'save_post'), 1, 1);

public function save_post($post_id) {
    remove_action('save_post', array($this, 'save_post'), 1, 1);