I'm able to work around the issue by only using field-level validations instead of defining a custom type validator. This seems to bypass the type resolution code and thus avoids the infinite loop.