Avoid unnecessary use of oneOf

Using `oneOf` makes any validation errors within the subschema more opaque in most validators (most validators simply say that none of the `oneOf` subschema validated, not the specific validation errors).