Out of curiosity, where does the math for delta vec -> screenspace come from?
Also, why do GetDeltaVector and GetDistFromProj use different methods of getting client abs origin?
If you create separate SyncHuds for each projectile and pass those into DrawIndicator, you could get sharper tracking (killing or repurposing each SyncHud as its projectile dies).
Lastly, I believe the annotation feature of TF2 (as in https://forums.alliedmods.net/showthread.php?p=1317304
) can do most of this already, including screenspace indicators and in-world blips, though you can't modify the size it takes up on the screen (for the in-world ones).