Meta Boxes causing Header errors

It is probably here:

if ( !wp_verify_nonce( $_POST['address_noncename'], plugin_basename(__FILE__) )) {
  return $post->ID;
}

You are using $_POST['address_noncename'] but aren’t checking to see if it exists before you do. That is going to trigger the warning you mentioned about an “undefined index”. If that warning prints to the screen before the headers are sent, you get the header error. Try:

if ( !isset($_POST['address_noncename']) || !wp_verify_nonce( $_POST['address_noncename'], plugin_basename(__FILE__) )) {
  return $post->ID;
}

That will return $post->ID; if the nonce field is not set or if the nonce is invalid. That may not be the exact logic you want but that is the kind of check you need to avoid that avoid the warning and the header error.