Creating Custom user type just like custom post

Well, Roles are in many ways custom user types and you can add meta fields specific to roles. For example…

function is_my_user_role($id = null) {
  global $profileuser;
  if (empty($profile) && !empty($id)) $profileuser = get_user_to_edit($id);
  return (in_array('myrole',$profileuser->roles)) ? true : false;
}

function my_user_fields($profileuser) {
  if (!is_my_user_role()) return false;

  // HTML for the fields
}
add_action('show_user_profile', 'my_user_fields');
add_action('edit_user_profile', 'my_user_fields');

And essentially the same check when you go to save the data.