Currently there is no such functionality. A couple of somehow relevant feature requests are open in our issue tracker:
https://youtrack.jetbrains.com/issue/TW-19011
https://youtrack.jetbrains.com/issue/TW-24245
please whatch/vote/comment on these or record your own feature request if your case is not covered by these two.
As for your example, there is of course a workaround, you can make a snapshot dependency between two faster build configurations, say, make B dependent on C, in that way you’ll guarantee that the first three builds to occupy your agents will be A, C and D, and then whenever C is over B will start. This workaround will not work for all such cases of course, just for the simplest ones.