Simply changing the discount type from “Percentage Discount” to “Sign Up Fee % Discount” seems to solve the issue.
The subscriptions plugin gets confused when calculate_totals gets called multiple times. Somehow it mixes up the Subscription price and the sign-up fee. Also internally it throws an “Sorry, this coupon is only valid for an initial payment and the subscription already has a free trial.”-exception when the discount type is not one of the Subscriptions-discount types. Changing the discount type to “Sign Up Fee % Discount” fixes this, but I don’t know why.