Ok so maybe i am misunderstanding. You set a discount in the admin interface, correct? Then you want to call that discount manually, through code, for every shopping cart, correct?
First you should always call the base of the overridden class (like in the sample code Dawid shared) this will make sure that any other discounts get call that you are not handling in code first and then yours would process.
Second though i have nit tried this i am pretty sure setting an additional discount object will not work because this class function is called after discounts are applied, so adding another wont add that to the group to process like you are showing.
If you want to do it this way, still get your discount then grab its currency value and return the final value like Dawid described above except do it like: base.CalculateShippingInternal(cart) - yourDiscount
You are on the right track but can accomplish this by being more direct in your code vs. trying to call more internal functions to apply it.