How can I limit CiviDiscount codes to be used for a maximum number of participants rather than amount of times?
You might try installing the Redeem By Participant extension, which changes CiviDiscount's default behavior of only incrementing the use count by 1 no matter how many registrations are included in a single transaction. With this extension, if a sponsor purchases 10 tickets at the same time, the use count of the discount code would be incremented by 10 (rather than by 1), which may help your use case.

https://github.com/ginkgostreet/com.ginkgostreet.cividiscount.rbp

(I realize this is a very old question, and you may have solved this already, but this is an option that might help someone else.)