Any idea why view->field is empty when executing a view returning user emails?
If anyone else sees this it is because view does a checkAccess before adding the field during preExecute. Since it is the mail field there is no other way to allow access to that field unless you give administer users. But, there is a patch coming out that introduces a mail field access permission.
https://drupal.org/project/drupal/issues/2799049
With patch and permission set everything works.