I wonder if a different type of ranking, based on initial buy-in time, would help. Call it BuyinRank, for instance. The first person to buy-in would have a BuyinRank of 1, the second person to buy-in would have a BuyinRank of 2, and so on. Rebuys don't affect it - only initial buy-in order.
So, as an example, if you had a 50-player tournament, with 10 alternates (total of 60 players), you could have something like:
(n-r) * 10 * if(buyinRank <= 50, 1, 0)
This would zero out points for alternates (just as an example).
What this would NOT do is differentiate starters from alternates. Until there is a complete way to do this, I think you'll never be able to do something like 'award the 2nd place finisher points for 1st place if the 1st place finisher was an alternate'.