Custom #ajax "Add another" button only adds 1
You made a common mistake. In Form API, ['#ajax']['callback'] has only 2 purposes:


Make one-time changes to form, that are not meant to persist form reload, submit or second Ajax request. Good example is adding some classes to freshly modified element.
Return proper part of the form.


To have persistent changes, you need to keep the number of elements you want somewhere, for example in $form_state, and add them in form builder function, buildForm in your case. 

My approach would be to check $form_state['triggering_element'] to see if it was your Ajax button to invoke form building, and if so, increase counter. Then simply for($i = 0; $i &lt; $element_counter; ++$i) to add required number of elements.