Currently we use execution-date when generating the command to send via executor in https://github.com/apache/airflow/blob/9c94b72d440b18a9e42123d20d48b951712038f9/airflow/models/taskinstance.py#L420-L436

We should replace the execution_date in their to run_id instead and handle the corresponding changes needs on the executor and worker.
tests/models/test_taskinstance.py
ti.refresh_from_db()
        assert ti.state == State.FAILED
        assert ti._try_number == 4
        assert ti.try_number == 5
        assert RenderedTaskInstanceFields.get_templated_fields(ti) == expected_rendered_ti_fields
    def test_next_retry_datetime(self, dag_maker):
        delay = datetime.timedelta(seconds=30)
        max_delay = datetime.timedelta(minutes=60)
        with dag_maker(dag_id='fail_dag'):
            task = BashOperator(
                task_id='task_with_exp_backoff_and_max_delay',
                bash_command='exit 1',
                retries=3,
                retry_delay=delay,
                retry_exponential_backoff=True,
                max_retry_delay=max_delay,
            )
        dag_maker.create_dagrun()
        ti = TI(task=task, execution_date=DEFAULT_DATE)
        ti.end_date = pendulum.instance(timezone.utcnow())
        date = ti.next_retry_datetime()
        
        period = ti.end_date.add(seconds=30) - ti.end_date.add(seconds=15)
        assert date in period
        ti.try_number = 3
        date = ti.next_retry_datetime()
        
        period = ti.end_date.add(seconds=240) - ti.end_date.add(seconds=120)
        assert date in period
        ti.try_number = 5