Remove decoy PersonAdder. Nice idea, but it won't work.
Lowercase the email in AddPersonForm. Restore the call to portal_registration.addMember().

This still doesn't explain the bizarre behavior of login_next(), sadly.