April 21:
The issue appears to be related to Stripe. The submit button is generating a couple of ajax calls to the stripe url as:
https://q.stripe.com/?event=elements.event.focus&event_count=12×tamp=1587498851543& ...
https://q.stripe.com/?event=elements.event.blur&event_count=13×tamp=1587498851574& ....
After that first click, presumably the stripe extension is going to disable the submit button to avoid multiple clicks, and then it doesn't re-enable it, presumably because it doesn't get back the answer it expects, so no further action happens on clicking submit again.
Apr 28:
For anyone else trying to debug this - the first clue is to enable javascript debugging, i.e. at /civicrm/admin/setting/stripe:
Enable Stripe Javascript debugging?
That provides me with the clue that it's getting blocked at line 335 of
civicrm_stripe.js (of the unminified version), i.e. it's using a jquery
validation plugin that thinks the form is not valid. If I remove that check, it goes ahead (and tells me my credit card is invalid).
So we've narrowed it down to some kind of conflict between the premiums section and the stripe extension's use of the jquery validation plugin.