Create role that can edit some user details, but not the role

I am not sure if there is something native. However you could get really hacky if you wanted to if no other option.

You could create a css class to be inserted based on the current user role that is logged in. Then target that role (being sales for example) and hide that form field.

You could use something like this:

function sales_role_admin_body_class( $classes ) {
    global $current_user;
    foreach( $current_user->roles as $role )
        $classes .= ' role-' . $role;
    return trim( $classes );
}
add_filter( 'admin_body_class', 'sales_role_admin_body_class' );

Then you could target it something like this in your css:

.role-sales #form_field_id_you_want_to_hide{ 
    display: none !important; 
}

Purely an example and very hacky. However it would work if no other option.