Hi, my name is Matt and can help you with the D3.js tree script (22 years IT developer and webmaster, 3+ years scripting D3.js).
I have used exactly the same script in one other project so it can be done for you as well. You need to know that interactive dynamic updating of nodes (adding, deleting) was not possible with the current script (I'm still struggling deep into D3.js internals to solve this if at all possible). So if the complete data tree can be retrieved - you mentioned AJAX calls - before displaying it on the screen then the D3.js solution will be fine.
This also means if the data changes it will need to reread the data again (or at least add to the existing) and draw the complete tree again (e.g. no live adding of only few nodes). This might get slow yet regarding your "2 backlink levels" only I believe you won't reach 50-100.000 nodes that is a practical limit of D3.js before a web browser starts "freezing".
Looking forward to your reply. I'm free for the next week currently.
Regards,
Matt