Solved, posting the fix in case it helps someone else.
The problem was that my app version was stuck in the rejected submission. Every in-app purchase I added went into a separate draft that couldn’t connect to the version.
What worked:
Open the rejected submission (App Review > the submission with ‘Unresolved Issues’).
Hover over the app version row under Items Submitted. A red minus appears on the right. Click it and confirm Remove. Wait for the status to change from Processing to Removed. This doesn’t delete the version, build, or metadata.
Add every in-app purchase to the same draft. Subscriptions need to be added one by one, not just the group. Otherwise you get ‘New subscription groups must be submitted with an auto-renewable subscription from within that group.’
Go to the app version page. The button now says ‘Add for Review’ instead of ‘Update Review.’ Click it and choose the existing draft.
The draft then says it will be reviewed together with the iOS version, and Submit for Review works.
In my case the version didn’t join the draft automatically after removal, so step 4 was needed. Credit to this thread, which pointed me in the right direction: https://developer.apple.com/forums/thread/841193