The issue appears to be related to Stripe. The submit button is generating a couple of ajax calls to the stripe url as:
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.
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.