This is probably something better suited for ansible-devel, however to answer your question we do already provide several methods for limiting the scope of playbook runs (--tags, --start-at-task, --step, etc.). Ansible is really very linear, even when considering role dependencies (we compile everything down into a single list of tasks, and iterate through that), so there's no crazy dependency resolution to fix.
Also, there is the added complication that things on remote targets may have changed, so in general you would not want to automatically limit the execution of a playbook to only those parts of the play which have changed on the controlling machine.
While your suggestion might be technically possible, it definitely seems overly complex for what Ansible does. If you only need to re-run a single role or even a small subset of tasks, it is pretty trivial to create a new playbook to do so.