Verifying email addresses is a solved problem that doesn't require _any_ of that... you just send a time-sensitive, signed link containing a unique identifier to that email address, and users click it to verify their address.
I really can't understand why they would choose to go a different way -- and particularly _this_ one.