Am trying to suggest a very simple way below.
You don't have to create a hook
to override the existing Liferay's User Registration form. You can create your own customized User Registration form with your favourite view technology and with your own customized fields (I mean, less number of fields compared to Liferay's User Registration fields). All validations on this form will be done by your code and error messages will be thrown by your code only. Only when all of the validations pass through, you can call Liferay's addUser method.
Am just trying to provide an example below. Modify the code as per your requirement.
if(allValidationsPassThrough)
{
long[] organizationIds = { 111L }; //Just an example. Check the Organisation ID you are using
long[] groupIds = { 222L };
long[] roleIds = { 333L };
long[] userGroupIds = (long[])null;
String screenName = yourBean.getUser(); //Just an example
UserLocalServiceUtil.addUser(//Pass the parameters to this method );
}
Note : There are many parameters that this method expects. In User Registration form, if you are not capturing Birthday (for eg.,) , then pass the value as null
or your own birthday :)