The SetEmailAsUsernameListener, which is being called on admin save form event, always overwrites the username value, no matter what you provide in the form. I think it should be controlled via a configuration flag, so a compiler pass adds this listener only when it is set to do so.