It is expected that module hook_update_N() implementations should not use the module's own APIs, but that is not for the module's hook_schema(), hook_install() or hook_enable() implementations.
Drupal 7's module_enable()'s workflow is roughly as follows:
- Load mymodule.module file.
- Load mymodule.install file.
- Update the {system} table to mark the module as being enabled.
- Reset the cached list of system files.
- Clear the cached list of module files.
- Clear the cached list of hook implementations.
- Reload the system registry to include all files identified in the previous steps.
- Clear the cached schema.
- Clear the entity info cache.
- Install the new module's schema.
- Update the module's schema_revision value to the numerically highest hook_update_N() implementation.
- Run the module's hook_install() implementation, if present.
- Run the module's hook_enable() implementation, if present.
It's worth noting that step 7 causes any implementations of hook_registry_files_alter() to execute, which can lead to unexpected problems, like Media module not installing or the same with Styles module.
What I would recommend is changing the installation process to not load the module file, rely on the hook_install() to instead deal with any custom logic on its own and only run registry_update() after the module has been properly installed.