So if I understand whistlemaker, MODX will look for all the snippets, run them and then render the page?
Yes - though I tend to think that browsers render pages and the php code 'creates' the page - running snippets is part of creating the page - the only difference between 'normal php' and modx snippets (which are just a way of embedding php into a page) is that cached snippets are run before uncached snippets (I think because the cache page contains the results of the cached snippets, and the uncached snippet tags intact - take a look at a cached page to see what I mean, core/cache/resource/web/resources/5.cache.php where 5 is the id of the cached page)
So where the snippet appears in the template has no bearing on how fast MODX creates the page?
Don't believe so - see below for a long winded explanation.
oh placeholders - my brain didn't connect placeholders with modx placeholders, even though it pretty obvious!
So I just did a little test for myself and you can put the snippet that sets the placeholder after the placeholder and it still works - which shows you that modx does not just work down the page it is parsing/evaluating the snippet before it replaces placeholders order on the page does not matter.
If you call the snippet uncached then you will find the placeholder tag in the cache file, if you call the snippet cached you will find the placeholder tag replaced with the contents of the placeholder. So no need to call the placeholders uncached - the system is smart!
MODX is evaluating the snippets before replacing placeholders (which is how it needs to work, this means you don't have to worry about getting the setPlaceholders all before the placeholders in the code, which makes it possible to add placeholders to your page without worrying about where the snippet is on the page) and likewise it can't replace the placeholders before it has figured out what they are so in your case modx can't really do anything until your xml back.
So I think it does not really matter where you put this code - it will take however long it takes and hold things up while its doing its thing.
If you want to speed things up - that is have the page created by modx and then sent to the browser to be rendered by the browser and not worry about the xml fetch blocking things perhaps you could use AJAX - have some javascript grab the data after you have sent some or all of the page to the browser and then insert the content where the placeholders would have been.