<!--- Verify first that your issue is not already reported on GitHub -->
<!--- Also test if the latest release and devel branch are affected too -->
<!--- Complete *all* sections as described, this form is processed automatically -->

##### SUMMARY
<!--- Explain the problem briefly below -->
I can see difference in how we handle templating in 2.9 and 2.8. You could see when we run the same playbook on 2.9.2 it is not showing us value of "testvar" in following result which we can see in 2.8.4

```
ok: [localhost] => {
    "big_test_list1": [
        {
            "key": "test2_{{ testvar }}_password", 
            "value": "test"
        }
    ]
}
```
##### ISSUE TYPE
- Bug Report

##### COMPONENT NAME
<!--- Write the short name of the module, plugin, task or feature below, use your best guess if unsure -->

##### ANSIBLE VERSION
<!--- Paste verbatim output from "ansible --version" between quotes -->
```paste below
**Ansible** : 2.8.x
**Ansible** : 2.9.x

```

##### CONFIGURATION
<!--- Paste verbatim output from "ansible-config dump --only-changed" between quotes -->
```paste below

```

##### OS / ENVIRONMENT
<!--- Provide all relevant information below, e.g. target OS versions, network device firmware, etc. -->
RHEL 8

##### STEPS TO REPRODUCE
<!--- Describe exactly how to reproduce the problem, using a minimal test-case -->

<!--- Paste example playbooks or commands between quotes below -->
```yaml
---
Playbook.yml on 2.9.2

- name: TEST
  gather_facts: False
  hosts: localhost

  vars:
    testvar: "vars"
# vault password is: test
    testdict2:
       "test2_{{ testvar }}_password": !vault |
          $ANSIBLE_VAULT;1.2;AES256;test
          38636163353333363936333133633334646465393136613037626530663664326665613835326466
          6130633637383730613462353037613139323232373762630a616237356230333163666632303262
          32313232616539333664633364636562626539393439333539316236623161386163386533613063
          6466396661323462620a396565646637616264316338636333343738653831383137643463653830
          6433

  tasks:
   - debug:
       var: testdict2

   - set_fact:
       big_test_list1: "{{ big_test_list1 | default([]) + item }}"
     loop:
       - "{{ testdict2 | dict2items }}"

   - debug:
       var: big_test_list1
```

<!--- HINT: You can paste gist.github.com links for larger files -->

##### EXPECTED RESULTS
<!--- Describe what you expected to happen when running the steps above -->

Playbook should show results as follows

```
**On 2.8.4**

Vault password: 

PLAY [TEST] *******************************************************************************************************************************************************************************************************

TASK [debug] ******************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "testdict2": {
        "test2_{{ testvar }}_password": "test"
    }
}

TASK [set_fact] ***************************************************************************************************************************************************************************************************
ok: [localhost] => (item=[{'key': 'test2_vars_password', 'value': 'test'}])

TASK [debug] ******************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "big_test_list1": [
        {
            "key": "test2_vars_password",
            "value": "test"
        }
    ]
}


```

##### ACTUAL RESULTS
<!--- Describe what actually happened. If possible run with extra verbosity (-vvvv) -->

<!--- Paste verbatim command output between quotes -->
```paste below
**On 2.9.2**

Vault password: 

PLAY [TEST] *******************************************************************************************************************************************************************************************************

TASK [debug] ******************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "testdict2": {
        "test2_{{ testvar }}_password": "test"
    }
}

TASK [set_fact] ***************************************************************************************************************************************************************************************************
ok: [localhost] => (item=[{'key': u'test2_{{ testvar }}_password', 'value': u'test'}])

TASK [debug] ******************************************************************************************************************************************************************************************************
ok: [localhost] => {
    "big_test_list1": [
        {
            "key": "test2_{{ testvar }}_password", 
            "value": "test"
        }
    ]
}

```

try:
            plugin = getattr(self._connection, '_%s' % plugin_type)
        except AttributeError:
            
            plugin = getattr(self._connection, plugin_type)
        option_vars = C.config.get_plugin_vars(plugin_type, plugin._load_name)
        options = {}
        for k in option_vars:
            if k in variables:
                options[k] = templar.template(variables[k])
        
        plugin.set_options(task_keys=task_keys, var_options=options)
    def _set_connection_options(self, variables, templar):
        
        PRESERVE_ORIG = ('inventory_hostname',)
        
        final_vars = combine_vars(
            variables,
            variables.get('ansible_delegated_vars', {}).get(self._task.delegate_to, {})
        )