I propose a new model; 'total liability'.
Every time something bad happens, you identify every person who contributed to the harm, calculate each person's liability and they have to pay. If some of the culprits cannot be identified, then the remaining culprits who can be identified have to absorb the unallocated liability... Not allocating full liability to people who do harm is akin to allocating it to everyone, including those who played no part in the harm. This is immoral and creates perverse incentives for continued harm.
For example, someone discards an empty plastic Coca Cola bottle on the ground in a public park, the person is fined maybe 95% but 5% of the fine is directed to the Coca Cola company for having made the decision to make the bottle out of plastic instead of tin or glass; thus being complicit in the harm. The money for any harm done, by any entity should go directly towards UBI and be paid out equally to all citizens.
The government could also use statistics to fine companies based on reasonable estimates of current harmful practices. For example, how much damage is microplastics causing in terms of medical costs globally? Make a list of all companies responsible, fine each one proportionally to their contribution to the harm.
People should be paid for identifying, reporting and successfully proving harmful practices (they deserve a commission, like a lawyer).
Identifying and reporting problems adds value to society and should be rewarded.
The majority of the proceeds should go to UBI. Why UBI? Because diffuse harms require diffuse remedies. It's not possible to award damages for widespread harm in a fair, non-corrupt way, so distributing to all citizens equally is the best approach. It's not perfect, but people know how to count and it's easier to identify and prove fraud if the rule is simple like 'each person gets the same amount of UBI'.