@cks in this case there is an expectation of the number of coupon codes being strictly larger than the number of users, by a safety margin designed to exceed the number of new users who could even in theory onboard during the validity period of the coupons.
I feel like if I could just order the users in a stable way, say by sequential record ID, then order the coupons by record ID, and filter out mapped pairs by NOT EXISTS in the user→coupon mapping table... Ugh I don't know, I'm a bad DBA