**Apache Airflow version**:
v2.0.0

**What happened**:

Custom operators inheriting from DummyOperator are go in to a scheduled state, where as DummyOperator itself is set straight to success.

**What you expected to happen**:

All operators should be successfully executed.

**How to reproduce it**:

```py
from datetime import datetime
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator

class MyJob(DummyOperator):
    template_fields_renderers = {
        "body": "json"
    }
    template_fields = ("body",)

    def __init__(self, body, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.body = body

with DAG(
    dag_id="test",
    schedule_interval=None,
    start_date=datetime(2020, 8, 13),
) as dag:
    MyJob(task_id="aaaa", body={"aaa": "bbb"})

```

**Anything else we need to know**:
This is a known problem that we will fix, see: https://github.com/apache/airflow/pull/10956#discussion_r502492775
airflow/models/dagrun.py
"""
        Set the given task instances in to the scheduled state.
        Each element of ``schedulable_tis`` should have it's ``task`` attribute already set.
        Any DummyOperator without callbacks is instead set straight to the success state.
        All the TIs should belong to this DagRun, but this code is in the hot-path, this is not checked -- it
        is the caller's responsibility to call this function only with TIs from a single dag run.
        """
        
        
        dummy_tis = {
            ti
            for ti in schedulable_tis
            if (
                ti.task.task_type == "DummyOperator"
                and not ti.task.on_execute_callback
                and not ti.task.on_success_callback
            )
        }
        schedulable_ti_ids = [ti.task_id for ti in schedulable_tis if ti not in dummy_tis]
        count = 0
        if schedulable_ti_ids: