Hi Sophie,
Did you try using setInterval function to call setBusy after set time, say 500ms? If you are using jQuery ajax style asynchronous data loading, you can reset the busy indicator in callback functions after data is loaded.
Loading 3000+ children in one go does not lead to good user experience in my opinion. Did you consider using other methods of loading data like using breadcrumbs style drill down report with server side paging. As you may already know, oData with table control, paging comes for free.
Regards
Raj