### Summary

Executing a playbook with many hosts, there is massive overhead in checking whether the hosts list is a pattern, see for yourself on this callgrind graph:

![grafik](https://user-images.githubusercontent.com/3154871/111359016-4a4bf480-868b-11eb-8c8f-55b6a6a10bd7.png)

https://github.com/ansible/ansible/blob/da60525610a384bb04833b1c6429d9db6a87ef64/lib/ansible/vars/manager.py#L490

That check has quadratic runtime with the number of hosts - with a lot of hosts, commenting that check out reduces runtime manyfold.

### Issue Type

Bug Report

### Component Name

variable manager

### Ansible Version

2.10.5, devel

### OS / Environment

Ubuntu

### Steps to Reproduce

```yaml
- hosts: localhost
  tasks:
    - set_fact:
        extra_tasks: true # compute it
        hosts: "{{ [an, array, with, 5100, computed, hosts] }}"

- hosts: "{{ hostvars.localhost.hosts }}"
  vars:
    extra_tasks: "{{ hostvars.localhost.do_extra_tasks }}"
  tasks:
   # some more tasks here
    - name: Execute extra tasks
      command: /bin/true # example
      when: extra_tasks
```

### Expected Results

Execute in tens of seconds.

### Actual Results

Take over 5 minutes to execute.
fail = True
                if task.loop_with == 'first_found':
                    
                    fail = False
                try:
                    loop_terms = listify_lookup_plugin_terms(terms=task.loop, templar=templar,
                                                             loader=self._loader, fail_on_undefined=fail, convert_bare=False)
                    if not fail:
                        loop_terms = [t for t in loop_terms if not templar.is_template(t)]
                    mylookup = lookup_loader.get(task.loop_with, loader=self._loader, templar=templar)
                    
                    for subdir in ['template', 'var', 'file']:  
                        if subdir in task.action:
                            break
                    setattr(mylookup, '_subdir', subdir + 's')
                    items = wrap_var(mylookup.run(terms=loop_terms, variables=vars_copy))
                except AnsibleTemplateError:
                    
                    
                    items = [None]
            else:
                raise AnsibleError("Failed to find the lookup named '%s' in the available lookup plugins" % task.loop_with)
        elif task.loop is not None:
            try:
                items = templar.template(task.loop)
            except AnsibleTemplateError:
                
                
                items = [None]
        else: