Hi,
as you noticed, currently the TSILO modulo relies on location table to append new branches. While the improvement you propose could be done and may be useful in some cases (when you want to add another branch not tight to the AoR), take in count that simply adding a branch using the contact header may not cover all you scenarios. For example nat-ed clients, clients registering through a proxy adding the Path header to the REGISTER or clients registering using sip.instance contact param. You might have to take in count all of this manually in the script, while using registrar/usrloc all of this would be handled automatically. May I ask you the reason why you don't want to use location table? If the problem is the retention in the location table you could make your client send Expire=1 so that the contact is kept in memory really the time needed to append the new branch.
Best regards,
Federico Cabiddu