What about just targeting with CSS?
tr.user-nickname-wrap { display: none; }
Of course the fields will still be in the source but the CSS targeting will be faster than JS.
You can load your WP Admin CSS this way:
function wse_183286_profile_admin_css() {
$screen_id = isset( get_current_screen()->id ) ? get_current_screen()->id : null;
if ( 'profile' === $screen_id || 'user-edit' === $screen_id ) {
wp_enqueue_style( 'profile-admin-css', '/path/to/your/file.css' );
}
}
add_action( 'admin_enqueue_scripts', 'wse_183286_profile_admin_css' );
Unfortunately, I don’t think there are hooks provided in WordPress (yet) to remove fields in the clean way you are looking for.