### 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
#
#
#
#
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
import ast
import datetime
import os
import pkgutil
import pwd
import re
import time
from contextlib import contextmanager
from hashlib import sha1
from numbers import Number
from traceback import format_exc
from jinja2.exceptions import TemplateSyntaxError, UndefinedError
from jinja2.loaders import FileSystemLoader
from jinja2.nativetypes import NativeEnvironment
from jinja2.runtime import Context, StrictUndefined
from ansible import constants as C
from ansible.errors import (
    AnsibleAssertionError,