Best way to change profile page

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.