The general rule is that whenever people are adding too many custom fields, they should be considering different database designs. Multiplicity should be handled with related tables that capture what is common in each thing, not with tons of different things.
If you can tell us what your data is like, roughly, maybe I can suggest a different design.
So typically if all of those are “Requirements”, you would add a new module called Requirements and relate it to the Opportunities. Each requirement could have a name, and some generic properties where you can fit all the information you need. These requirements would show as a subpanel, and you could list them, or search for them, get reports by Requirement, etc.
You can also consider working with an exisitng module (saves you work and gives you added functionality which might be useful). The Product module and the Quotes Line items are possibilities you could examine.