### Summary

The option `jinja2_native=1` seems not well applied in template module.

### Issue Type

Bug Report

### Component Name

template

### Ansible Version

```console
$ ansible --version
ansible [core 2.11.6] 
  config file = /usr/local/src/ansible.cfg
  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.9/site-packages/ansible
  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.9.9 (main, Nov 17 2021, 16:20:40) [GCC 10.2.1 20210110]
  jinja version = 3.0.3
  libyaml = True
```


### Configuration

```console
$ ansible-config dump --only-changed

# empty output
```


### OS / Environment

Debian 11.1 (Bullseye)

### Steps to Reproduce

Here my files:

```sh
root@flhpz4:/usr/local/src# ls -al
total 20
drwxr-xr-x 1 root root 4096 Nov 27 18:50 .
drwxr-xr-x 1 root root 4096 Nov 15 00:00 ..
-rw-r--r-- 1 root root  830 Nov 27 18:45 playbook-bug.yml
-rw-r--r-- 1 root root  234 Nov 27 18:39 template.j2
```

The `template.j2` file:

```
var_good is {% if var_good is not none %}NOT {% endif %}none, value=[{{ var_good }}], type={{ var_good | type_debug }}
var_bad is {% if var_bad is not none %}NOT {% endif %}none, value=[{{ var_bad }}], type={{ var_bad | type_debug }}
```

And my playbook:

```yaml
---
- name: "test produce a bug... It seems to me..."
  hosts: "localhost"
  connection: "local"
  gather_facts: false
  vars:
    d:
      x: null
    y: null
    var_good: "{{ y }}"
    var_bad: "{{ d.x }}"
    msg: |-
      var_good: type={{ var_good | type_debug }}, value=[{{ var_good }}]
      var_bad: type={{ var_bad | type_debug }}, value=[{{ var_bad }}]
  tasks:
    - ansible.builtin.debug:
        msg: "{{ msg.split('\n') }}"
    - name: "lookup without jinja2_native"
      ansible.builtin.debug:
        msg: "{{ lookup('template', 'template.j2') | trim | split('\n') }}"
    - name: "lookup with jinja2_native=yes"
      ansible.builtin.debug:
        msg: "{{ lookup('template', 'template.j2', jinja2_native='yes') | trim | split('\n') }}"
    - ansible.builtin.template:
        src: "template.j2"
        dest: "/tmp/template.yml"
```

Here is the command to produce the bug (according to me):

```sh
rm -f /tmp/template.yml && ANSIBLE_JINJA2_NATIVE=1 ansible-playbook --diff -i 'localhost,' playbook-bug.yml 
```


### Expected Results

To me, because `jinja2_native` is enabled, the tasks:

- `lookup without jinja2_native`
- and `lookup with jinja2_native=yes`

should evaluate `var_good` **and** `var_bad` to `none`, and not just `var_good`, no?

Currently, these tasks evaluate `var_good` to `none` (OK for me) and `var_bad` to the **string** `None`.

By the way, with `jinja2_native` **disabled** (ie `ANSIBLE_JINJA2_NATIVE=0`), these tasks evaluate `var_bad` to an **empty string**. So `jinja2_native=1` changes the behavior of template module, but not in the expected way to me.


### Actual Results

```console
PLAY [test produce a bug... It seems to me...] *************************************************

TASK [ansible.builtin.debug] *******************************************************************
ok: [localhost] => {
    "msg": [
        "var_good: type=NoneType, value=[None]",
        "var_bad: type=NoneType, value=[None]"
    ]
}

TASK [lookup without jinja2_native] ************************************************************
ok: [localhost] => {
    "msg": [
        "var_good is none, value=[None], type=NoneType",
        "var_bad is NOT none, value=[None], type=str"
    ]
}

TASK [lookup with jinja2_native=yes] ***********************************************************
ok: [localhost] => {
    "msg": [
        "var_good is none, value=[None], type=NoneType",
        "var_bad is none, value=[None], type=NoneType"
    ]
}

TASK [ansible.builtin.template] ****************************************************************
--- before
+++ after: /root/.ansible/tmp/ansible-local-19257luyp3lx/tmpt6d9t7gs/template.j2
@@ -0,0 +1,2 @@
+var_good is none, value=[None], type=NoneType
+var_bad is NOT none, value=[None], type=str

changed: [localhost]

PLAY RECAP *************************************************************************************
localhost                  : ok=4    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
```


### Code of Conduct

- [x] I agree to follow the Ansible Code of Conduct
'''
        Return jinja2 extensions to load.
        If some extensions are set via jinja_extensions in ansible.cfg, we try
        to load them with the jinja environment.
        '''
        jinja_exts = []
        if C.DEFAULT_JINJA2_EXTENSIONS:
            
            
            jinja_exts = C.DEFAULT_JINJA2_EXTENSIONS.replace(" ", "").split(',')
        return jinja_exts
    @property
    def available_variables(self):
        return self._available_variables
    @available_variables.setter
    def available_variables(self, variables):
        '''
        Sets the list of template variables this Templar instance will use
        to template things, so we don't have to pass them around between
        internal methods. We also clear the template cache here, as the variables
        are being changed.
        '''
        if not isinstance(variables, Mapping):
            raise AnsibleAssertionError("the type of 'variables' should be a Mapping but was a %s" % (type(variables)))
        self._available_variables = variables
        self._cached_result = {}
    @contextmanager
    def set_temporary_context(self, **kwargs):