### Apache Airflow version

main (development)

### What happened

The provider operator for Google Cloud Dataproc Batches has two bugs: 

1. The running [operator](https://github.com/apache/airflow/blob/main/airflow/providers/google/cloud/operators/dataproc.py#L2123-L2124) returns successful even if the job transitions to State.CANCELLED or State.CANCELLING 
2. It [attempts](https://github.com/apache/airflow/blob/main/airflow/providers/google/cloud/operators/dataproc.py#L2154) to 'reattach' to a potentially running job if it AlreadyExists, but it sends the wrong type since 'result' is a Batch and needs Operation

### What you think should happen instead

A new hook that polls for batch job completion.  There is precedent for it in traditional dataproc with 'wait_for_job'.

### How to reproduce

Use the Breeze environment and a DAG that runs DataprocCreateBatchOperator.  Allow the first instance to start. 

Use the gcloud CLI to cancel the job. 

`gcloud dataproc batches cancel <batch_id> --project <project_id> --region <region>`

Observe that the task completes successfully after a 3-5 minute timeout, even though the job was cancelled. 

Run the task again with the same batch_id.  Observe the ValueError where it expects Operation but receives Batch



### Operating System

Darwin 5806 21.6.0 Darwin Kernel Version 21.6.0: Mon Aug 22 20:17:10 PDT 2022; root:xnu-8020.140.49~2/RELEASE_X86_64 x86_64

### Versions of Apache Airflow Providers

Same as dev (main) version. 

### Deployment

Other Docker-based deployment

### Deployment details

Observable in the Breeze environment, when running against real Google Infrastructure. 

### Anything else

Every time. 

### 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)

:param version: Optional. The version of workflow template to instantiate. If specified,
            the workflow will be instantiated only if the current version of
            the workflow template has the supplied version.
            This option cannot be used to instantiate a previous version of
            workflow template.
        :param request_id: Optional. A tag that prevents multiple concurrent workflow instances
            with the same tag from running. This mitigates risk of concurrent
            instances started due to retries.
        :param parameters: Optional. Map from parameter names to values that should be used for those
            parameters. Values may not exceed 100 characters.
        :param retry: A retry object used to retry requests. If ``None`` is specified, requests will not be
            retried.
        :param timeout: The amount of time, in seconds, to wait for the request to complete. Note that if
            ``retry`` is specified, the timeout applies to each individual attempt.
        :param metadata: Additional metadata that is provided to the method.
        """
        if region is None:
            raise TypeError("missing 1 required keyword argument: 'region'")
        metadata = metadata or ()
        client = self.get_template_client(region)
        name = f"projects/{project_id}/regions/{region}/workflowTemplates/{template_name}"
        operation = client.instantiate_workflow_template(
            request={"name": name, "version": version, "request_id": request_id, "parameters": parameters},
            retry=retry,
            timeout=timeout,
            metadata=metadata,
        )
        return operation
    @GoogleBaseHook.fallback_to_default_project_id
    def instantiate_inline_workflow_template(