How can I limit the creation of extra fields for custom issue types, but still get what I need?
Our basic rule of thumb is to use a single field for a single purpose within a single project. Many people get themselves in trouble trying to use the same field for multiple purposes in a project. Keep it simple without inventing a new field for every issue type in every project.