The only other alternative I could think that might help in this situation would be to implement some kind of ticket reservation system:
The main problem with this is it will require additional development time and cost to implement and test.
- Customer can chooses to reserve an item and is told they will be informed when the item is available for them to purchase. A ticket is assigned to their account.
- As stock becomes available it is assigned to the tickets.
- System sends an email to the customer with a link to purchase that item with a set expiry time (say 24h-48h)
- If the customer does not purchase the item using that link within the time, the stock is assigned to the next ticket.
The main problem with this is it will require additional development time and cost to implement and test.