Does anyone know of a tool that can help me figure out why we are seeing runaway CPU in a managed app?
What I am not looking for:
I know that you specifically said that you didn't want to take complicate dumps and use WinDbg + Sos to analyze those.
However, that may not be necessary. I would suggest using WinDbg anyway, but instead of using dumps, just attach to the process when you see the runaway thread(s). Then all you need to do is run the !runaway command. That will give you the total running time for each thread. The runaway threads will be at the top of the list. Now all you have to do is run the !clrstack for the top thread (or threads as it may be).
E.g. if thread 4 is your primary suspect, do a ~4e!clrstack to get the managed stack for that thread. That should tell you what the runaway thread is doing.
I'll agree that WinDbg is not the easiest tool to use for many things, but this may actually turn out to be pretty simple, so I hope that you'll forgive me for posting something you didn't really what.
If WinDbg is still out of the question, feel free to comment.