These validators were not passing the $options constructor parameter up to their parent's constructor. This caused (among other things) custom validator messages to be ignored.
pass $options to parent constructor
I had a divergent history when applying this to the release branch, and ended up having to cherry pick; make sure you do a "git reset --hard origin/master" on your tracking branch to ensure you don't get a conflict.
Merged to release and master.