Possible solutions
Selective investments
As stated before, it is tempting for a company to only invest in innovation. The disadvantage of that is that it pulls away the scientists from the real research. Some university departments are not really doing any fundamental research, but are only innovating. This could be the case in mathematics, for example, where surprises during research are less likely than in biology. A company could invest in these departments, so that they minimise the effect of limiting research.
This is of course no solution to the other problems described above. Furthermore, it could be possible that researchers ``talk'' their projects into the field where the funding is. For example, a biology research project could get some funding from the computer science faculty, if they do some research on bioinformatics.
Total freedom
Companies could allow researchers total freedom. They do not impose limits on the researchers, nor do they limit the distribution of the results. This would of course be a good thing. Most of the above disadvantages of corporate funding have to do with companies taking away freedom from the scientists. However, companies are not filantropic institutions and are not likely to give money away for free.
Investing institutions
There could be a institution, which decides where money from companies should go. Researchers could sell their findings to this institution, where after companies can buy specific results. This would have the advantage that companies get what they are interested in. It will still have many of the above problems, but now the institution can be more objective on which research projects to select. One can argue that the Nobel Foundation is such an institution.