Roling your own user registration and authentication requires a number of steps. I try to eyplain them.
yourmodule_form_user_register_form_alter(&$form, &$form_state, $form_id) would be a good idea. Actually you have to alter only the submission call back and may be the validation call back. You can have a look at the last lines of user_register_form how this is done in drupal core.
To make sure the users can login. It's possible to include an external authentication service. Have a look at user_login_default_validators for this.
What is most important for you, that at the end of the login procedure you have to have a valid drupal user object. I'd recommend to have parallel external and drupal users. Probably do the authentication on your external service but let drupal load the corresponding drupal user once this was successful.
This gives you basic working system. Next steps would be to handle password change and one time password recovery links in a correct way.