Presales / Functionality Question
from a quick read I would expect you to be able to get most of the way, if not the whole way, but using Activities (or possibly Cases) to store the data for referals, and use Drupal Webforms to capture the data for referrals, and Drupal Views along with the Permissioned Relationships ACL extension which Fuzion created, to manage the job of who can see what at various levels of these daisy chains.

Others might suggest doing this directly via the Civi UI etc but we have found that Views + Webforms + Permissioned Relationships can get you a long way past what 'out of the box' civi can do, and without requiring custom coding.

Alternatively, or if required in addition to the above, I expect a developer could fill in any missing steps with an Extension.