Should I display UI asap and populate it later or show a preloader until I get my data?

I am working on a data-rich webapp using Meteor. I was previously considering that everything I can load should be loaded asap, and every part of my page depending on data should have its loader while it has not been received.

As a consequence, every thing is loading pretty fast, the user can explore the interface while the data is loading, but I get several simple spinners populating my interface. It creates imho a feeling of cluttering, or a lack of simplicity in design.

I am wondering if I should switch to a different approach: use a single, full page (except for the navigation layout), fancy loader and display the stuff all at once when I get its related data. The final result would certainly be more clean, but the UI would stay hidden longer, not to mention that all CDN data (mostly images) will still have its loader once the rest of the page has been loaded and populated.

Is there a consensus on how to deal with that? A best practice? As far as I can tell, the big players (facebook, google, quora, etc.) don't use a single page loader. Is there a reason why?