Maybe the answer is when you get punted from behind when driving at within say 80% of your car's corner capability and the car behind is 25% over his capability, the game puts you back in front of the car that hit you.
The game is not that smart though.
Another way also might be to calculate how much time you lost from being hit relative to the car that hit you. And then double that time for the car that hit you. So if you loose 3 seconds due to being hit, the hitter gets 6 seconds. And he should have to pay the penalty within one lap IMO... A pretty simple algorithm, surely.
PD tried to fix this. In corners the trailing car now usually gets the SR Down depending on speeds involved. No clue why they didn't fix it for the straights yet annoying bumps from behind while you are at full speed in a corner now often don't result in SR Down for you anymore. The game still has no clue about side to side contact in corners though. The inside car usually gets the benefit of the doubt (outside car gets SR Down) unless the outside car goes off and the inside car gets a penalty. It's like PD gives you the choice, either you accept 'fault' by staying on road after contact, or you drive off the road to give the other car a penalty.
Basing the penalty on time lost is tricky, especially with how easily you can game the system. You can do a desperate dive, clip another car then go off in the assurance that the car you clipped will get a penalty big enough so you can still overtake them!
What would be nice for the game to recognize is, that if you give back the position (or don't overtake after a bump) that the time penalty gets forgiven and SR loss dialed back to a simple SR Down (not -12 SR time penalty cost territory) That should be fairly simple, although again that can be gamed by the trailing car giving you an unfair penalty. Of course in that case you still have the choice to carry on with the default 1 to 3 sec penalty, better than get slapped with an unfair 16 sec penalty.
As you already pointed out, the game is not that smart. Added to this another level or two you seem to be forgetting. I ram you off the track and you loose 3s. I get a 6s penalty. WTF??!!!!! The prick behind me hit me and rammed me into you!!!! How is that *my* fault?? Ya can see the problem. Infinite diversity in infinite combinations

.
PD tried to fix this. About 80% of the time the car that did the initial punt gets the blame. It's not perfect yet, but much much better than it was. A couple months ago the algorithm was that the last car that made contact gets the penalty. It is getting smarter.
What does still go wrong is when a car stalls at the apex due to lag, traffic, accident, you brake, get bumped from behind, you still get SR Down for 'brake checking'. The game doesn't know what happens in front of you while having all the information right there. The penalty system needs to look at the context.
Penalty zones need to come first. 50% of incidents yesterday on the daily B were secondary fallout accidents from people shaving of shortcut penalties or contact penalties in stupid places. Brake early for the rollercoaster turn then go solid right when a group of traffic is hurtling down to the corner
Instead of penalties not counting down in braking zones or yellow flags, it should not count down when there's someone a second or less behind you. Yes, that means that in most races you'll just have to take the penalty across the finish. Which would work nicely with a give back / don't overtake forgiveness system where the penalty is automatically forgiven.
Also remove the dumb rounding up of penalties at the finish, instead half them to encourage people not to scrub them, it costs less than half the time to scrub them anyway. That should really be fixed yet apparently that's some complicated rocket science to get right. Simply make the final sector a no penalty scrubbing zone.