### Apache Airflow version

main (development)

### What happened

Steps to reproduce:
1. run 2 replicas of scheduler
2. initiate shut down of one of the schedulers
3. In Airflow UI observe message
<img width="1162" alt="image" src="https://user-images.githubusercontent.com/1017130/205650336-fb1d8e39-2213-4aec-8530-abd1417db426.png">

3rd step should be done immediately after 2nd (refreshing UI page few times). 2nd and 3rd steps might be repeated for couple of times in order to reproduce.


### What you think should happen instead

Warning message shouldn't be displayed.

The issue is that for this warning message recent (with latest heartbet) scheduler job is fetched
https://github.com/apache/airflow/blob/f02a7e9a8292909b369daae6d573f58deed04440/airflow/jobs/base_job.py#L133.

And this may point to job which is not running (state!="running") and that is why we see warning message.
The warning message in this case is misleading as another replica of scheduler is running in parallel.

### How to reproduce

_No response_

### Operating System

Linux

### Versions of Apache Airflow Providers

_No response_

### Deployment

Composer

### Deployment details

_No response_

### Anything else

_No response_

### Are you willing to submit PR?

- [X] 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)

when = timezone.utcnow() - datetime.timedelta(seconds=60)
        with create_session() as session:
            mock_session = Mock(spec_set=session, name="MockSession")
            mock_create_session.return_value.__enter__.return_value = mock_session
            job = MockJob(None, heartrate=10, state=State.RUNNING)
            job.latest_heartbeat = when
            mock_session.commit.side_effect = OperationalError("Force fail", {}, None)
            job.heartbeat()
            assert job.latest_heartbeat == when, "attribute not updated when heartbeat fails"
    @conf_vars(
        {
            ("scheduler", "max_tis_per_query"): "100",
            ("core", "executor"): "SequentialExecutor",
        }
    )
    @patch("airflow.jobs.base_job.ExecutorLoader.get_default_executor")
    @patch("airflow.jobs.base_job.get_hostname")
    @patch("airflow.jobs.base_job.getuser")
    def test_essential_attr(self, mock_getuser, mock_hostname, mock_default_executor):