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
ti.max_tries = max(ti.max_tries, ti.prev_attempted_tries)
            ti.state = State.NONE
            session.merge(ti)
        
        session.query(TR).filter(
            TR.dag_id == ti.dag_id,
            TR.task_id == ti.task_id,
            TR.execution_date == ti.execution_date,
            TR.try_number == ti.try_number,
        ).delete()
    if job_ids:
        from airflow.jobs.base_job import BaseJob
        for job in session.query(BaseJob).filter(BaseJob.id.in_(job_ids)).all():  
            job.state = State.SHUTDOWN
    if activate_dag_runs and tis:
        from airflow.models.dagrun import DagRun  
        drs = (
            session.query(DagRun)
            .filter(
                DagRun.dag_id.in_({ti.dag_id for ti in tis}),
                DagRun.execution_date.in_({ti.execution_date for ti in tis}),
            )
            .all()
        )
        for dr in drs:
            dr.state = State.RUNNING
            dr.start_date = timezone.utcnow()
class TaskInstanceKey(NamedTuple):