### Apache Airflow version

2.4.3

### What happened

A significant fraction of the DAG Runs of a DAG that has 2+ consecutive mapped tasks which are are being passed an empty list are marked as failed when all tasks are either succeeding or being skipped. This was supposedly fixed with issue #25200 but the problem still persists.
![image](https://user-images.githubusercontent.com/46539900/203193331-db94c793-36e8-4fbd-bc45-29865c44fbfc.png)

### What you think should happen instead

The DAG Run should be marked success.

### How to reproduce

The real world version of this DAG has several mapped tasks that all point to the same list, and that list is frequently empty. I have made a minimal reproducible example.

```
from datetime import datetime

from airflow import DAG
from airflow.decorators import task


with DAG(dag_id="break_mapping", start_date=datetime(2022, 3, 4)) as dag:

    @task
    def add_one(x: int):
        return x + 1

    @task
    def say_hi():
        print("Hi")

    @task
    def say_bye():
        print("Bye")

    added_values = add_one.expand(x=[])
    added_more_values = add_one.expand(x=[])
    added_more_more_values = add_one.expand(x=[])
    say_hi() >> say_bye() >> added_values
    added_values >> added_more_values >> added_more_more_values
```

### Operating System

Debian Bullseye

### Versions of Apache Airflow Providers

_No response_

### Deployment

Astronomer

### Deployment details

_No response_

### Anything else

_No response_

### Are you willing to submit PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

return self.execution_date
    def get_state(self):
        return self._state
    def set_state(self, state: DagRunState):
        if state not in State.dag_states:
            raise ValueError(f"invalid DagRun state: {state}")
        if self._state != state:
            self._state = state
            self.end_date = timezone.utcnow() if self._state in State.finished else None
            if state == State.QUEUED:
                self.queued_at = timezone.utcnow()
    @declared_attr
    def state(self):
        return synonym("_state", descriptor=property(self.get_state, self.set_state))
    @provide_session
    def refresh_from_db(self, session: Session = NEW_SESSION) -> None:
        """
        Reloads the current dagrun from the database
        :param session: database session
        """
        dr = session.query(DagRun).filter(DagRun.dag_id == self.dag_id, DagRun.run_id == self.run_id).one()
        self.id = dr.id
        self.state = dr.state
    @classmethod
    @provide_session
    def active_runs_of_dags(cls, dag_ids=None, only_running=False, session=None) -> dict[str, int]: