### 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
"""Double backslashes within jinja2 expressions
    A user may enter something like this in a playbook::
      debug:
        msg: "Test Case 1\\3; {{ test1_name | regex_replace('^(.*)_name$', '\\1')}}"
    The string inside of the {{ gets interpreted multiple times First by yaml.
    Then by python.  And finally by jinja2 as part of it's variable.  Because
    it is processed by both python and jinja2, the backslash escaped
    characters get unescaped twice.  This means that we'd normally have to use
    four backslashes to escape that.  This is painful for playbook authors as
    they have to remember different rules for inside vs outside of a jinja2
    expression (The backslashes outside of the "{{ }}" only get processed by
    yaml and python.  So they only need to be escaped once).  The following
    code fixes this by automatically performing the extra quoting of
    backslashes inside of a jinja2 expression.
    """
    if '\\' in data and '{{' in data:
        new_data = []
        d2 = jinja_env.preprocess(data)
        in_var = False