Given that users must be able to define their own fields on an object, and define allowed values for these fields - on the fly (no compile) - how would you solve this without using EAV?
Example: All objects need one or more reference to the 123 statusnumber (1.a or 2.b or 3.c allowed).
Relational databases really rely on the presence of a pre-defined and stable schema. Maybe you should look at document-oriented databases instead. They generally allow free definition of attributes, per document, and on-the-fly.
As for the schema validation, that probably needs to be done in your application if the schema itself can be changed by the user.