I usually run the output into less so that I can kill it via less instead using the q key.
$ cmd | less
Example
$ cat /dev/urandom | less
After hitting q+Enter it'll quit and return back to your normal terminal, leaving it nice and clean.
Why does that happen?
The problem you're encountering is that there are buffers that are being queued up with the output of your display. These buffers get filled so quickly that you're unable to interrupt it fast enough to stop it.
To disable/limit this effect you can disable the buffering which should make things a bit more responsive, but you'll likely have to play with these settings to get things the way you want. See this U&L Q&A for more details on how to disable/reconfigure buffering: How to turn off stdout buffering in a pipe?.
