hook_form_FORM_ID_alter being called twice (even before submit)
It has to do with the fact that Drupal redirects after the form submit. So after a form submit you will make 2 requests: the form submit and the redirect. Hence the 2 messages in your hook_form_alter(). 

You can disable this redirect by calling $form_state-&gt;disableRedirect() in your form submit handler. By disabling the redirect the form values will be preserved in the form. The redirect is in place to 'clean' the form inputs after submission.