Hah, we were doing this with EMR 6 years ago, I guess we were a little early :)
https://www.youtube.com/watch?v=NF6zwHlbh_I
We built a coordinator that would spin up specific categories of machines for each stage (some stages were MR jobs, some were hadoop streaming jobs) -- for example when doing in-memory work it was useful to have fewer nodes with more RAM, etc.