The error comes from '_validate_ticket' in trac.ticket.web_ui. As stated in the source comment header it will "Always validate for known values" of option fields.
Since you already mangle the custom field appearance, it might be worth trying to alter its input field type as well. The idea is to pretend it is a simple (text) input field, that will accept any value without validation, you see?
Other approaches would involve messing with Trac core code, what is not a bright idea, especially if you plan to follow upstream code in general for the years to come.