### Description

Currently some code in RDS Operators use boto waiters and some uses a custom `_await_status`, the former is preferred over the later (waiters are vetted code provided by the boto sdk, they have features like exponential backoff, etc). See [this discussion thread](https://github.com/apache/airflow/pull/27076#discussion_r997325535) for more details/context.

### Use case/motivation

_No response_

### Related issues

_No response_

### Are you willing to submit a 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)

cls.dag = DAG("test_dag", default_args={"owner": "airflow", "start_date": DEFAULT_DATE})
        cls.hook = RdsHook(aws_conn_id=AWS_CONN, region_name="us-east-1")
        _patch_hook_get_connection(cls.hook)
    @classmethod
    def teardown_class(cls):
        del cls.dag
        del cls.hook
    @mock_rds
    def test_create_db_instance(self):
        create_db_instance_operator = RdsCreateDbInstanceOperator(
            task_id="test_create_db_instance",
            db_instance_identifier=DB_INSTANCE_NAME,
            db_instance_class="db.m5.large",
            engine="postgres",
            rds_kwargs={
                "DBName": DB_INSTANCE_NAME,
            },
            aws_conn_id=AWS_CONN,
            dag=self.dag,
        )
        _patch_hook_get_connection(create_db_instance_operator.hook)
        create_db_instance_operator.execute(None)
        result = self.hook.conn.describe_db_instances(DBInstanceIdentifier=DB_INSTANCE_NAME)
        db_instances = result.get("DBInstances")
        assert db_instances
        assert len(db_instances) == 1
        assert db_instances[0]["DBInstanceStatus"] == "available"
    @mock_rds
    @patch.object(RdsBaseOperator, "_await_status")
    def test_create_db_instance_no_wait(self, mock_await_status):