How do I add fields and hide them from client?
Field permissions module would probably be the way. https://drupal.org/project/field_permissions

"The Field Permissions module allows site administrators to set field-level permissions to edit, view and create fields on any entity."

Check the issue queue though, for example:
https://drupal.org/node/2069281, "Profile2 field is empty after profile is saved"