The primary solutions I can see (not necessarily mutually exclusive) are to a) reduce the costs of research equipment and staff substantially so that competition for funding becomes less relevant, b) provide a larger pot of state-sponsored scientific funding (industrial science tends to favor refining research more than performing tentative research so corporate funding would be an ill-advised solution), or c) to discourage young budding potential grad students from even going into the grad school track in the first place.
As an individual, option c) is something that I personally feel like I can make a difference with. Professors in undergrad can be really terrible about conveying the exact career options you can have in science without necessarily going for the PhD. Invisible support positions like HPC system administrators, research software engineers, and even to some extent hospital lab workers don't require hefty commitments to grad school but still allow one to live within the world of scientific discourse and contribute to the advancement of various fields as an enabler (perhaps less so for hospital workers). Unfortunately, the invisibility of these professions is a major problem, which is why there are organizations like UKRSE [0] that strive to generate more recognition for at least Research Software Engineering (curiously Google in the States seems to have been quick to recognize scientific programmers as distinct professionals relative to PhDs and other programmers, while academia in the US has not done so nearly as much). Also, for some support positions in IT there are non-science options that are much more lucrative.