Modules themselves only execute in one place or the other: local or remote. Local actions are determined by prefacing the module call with the "local_action:" command, which means the module is executed locally no matter what the hosts list may be. The same effect can be accomplished by setting "hosts:" to just localhost (under the hood, local_action just sets the delegate_to option for the task to localhost).
The action plugins (found in lib/ansible/runner/action_plugins/) are what handles the logic of where things happen or how they're called. For instance, copy.py is the action plugin that handles copy actions (and abstracts out some of the other actions, like slurp). So, if you're wanting your module to execute both locally and remotely at the same time, you'll need to look into writing your own action plugin as well as the module.