I think it's best to only assign ONE validator to one of those fields of a group and set the error respectively on that field?
Example: There are 4 fields for each group (DATABASE_WHITELIST, DATABASE_INCLUDE_LIST, DATABASE_BLACKLIST, DATABASE_EXCLUDE_LIST). To avoid duplicate output of warnings (which is imo solved for the fallback case) AND putting duplicate warnings for the same problem on different fields (where only putting it on one specific field is valid) I suggest:
Remove all these validators.
Add a new validator to only one of those fields in the group, e.g. "*_INCLUDE_LIST`.
That validator checks:
if legacy AND new field for includes is set (yields the warning log msg)
if legacy AND new field for excludes is set (yields the warning log msg)
if any include AND any exclude is set (adds the error to the correct exclude-list or blacklist field, or to the exclude field if blacklist and exclude fields are both set)
This is basically the behavior of the code in #validate*Blacklist() except that the error message needs to be set to the correct field.