So, for completionisms sake. (math and formulas ahead)
Lets call the score you get if you sum up all the 20,000 pointers (No Bodies found, etc), and then subtract the non-target-kill penalty "S0". When Silent Assassin is achieved, S0 = 100,000.
Furthermore, lets call the total score "S". (this is what the leaderboards are based on)
S = S0 x f( t ),
where f( t ) is the bonus factor function, defined as:
f( t ) = 2.1 - (0.004/3) x t, when t < 5 minutes
f( t ) = 1.75 - (0.0005/3) x t, when 5 minutes < t < 15 minutes
f( t ) = 4.9/3 - (0.001/27) x t when t > 15 minutes.
(to calculate only the bonus, simply subtract 1 from f( t ). )
The graph shows the calculated bonus based on an S0 of 100,000. (Silent Assassin)
Note that in this graph, the calculated bonus compared to the actual bonus is so close that you can't even see the former underneath the latter in the graph.
As far as I can tell this works within expected errors based on the fact that the score is clearly based on fractions of seconds, but only shows whole seconds in the leaderboards.
There. This is my nerdiest thread on these forums yet I think. And that's saying a lot.