For xcoms pushed from different tasks, having the same execution_date and in the same Dag, the result of the xcom_pull with key set as None is not deterministic in its order

**Apache Airflow version**: 2.0


**Kubernetes version (if you are using kubernetes)** (use `kubectl version`):

**Environment**:

- **Cloud provider or hardware configuration**:
- **OS** (e.g. from /etc/os-release):
- **Kernel** (e.g. `uname -a`):
- **Install tools**:
- **Others**:

**What happened**:
When tasks in the same dag push Xcoms, the result of the xcom_pull comes in any order. The order is not deterministic.

**What you expected to happen**:

I expected the order to be deterministic.

**How to reproduce it**:

Run the provided example_xcom dag in the repository multiple times


airflow/models/taskinstance.py
tis,
    session,
    activate_dag_runs=True,
    dag=None,
):
    """
    Clears a set of task instances, but makes sure the running ones
    get killed.
    :param tis: a list of task instances
    :param session: current session
    :param activate_dag_runs: flag to check for active dag run
    :param dag: DAG object
    """
    job_ids = []
    for ti in tis:
        if ti.state == State.RUNNING:
            if ti.job_id:
                ti.state = State.SHUTDOWN
                job_ids.append(ti.job_id)
        else:
            task_id = ti.task_id
            if dag and dag.has_task(task_id):
                task = dag.get_task(task_id)
                ti.refresh_from_task(task)
                task_retries = task.retries
                ti.max_tries = ti.try_number + task_retries - 1
            else: