Throwing an idea out there: Software patents should last no more than 1 year. If you come up with something worth patenting, you get a year lead on competitors. That's it.
I think a better solution is a mandatory licensing process. The threat of absolute exclusion is too damaging to the industry. AND, the patent office needs to start DOING THEIR JOB and stop granting patents for obvious inventions.
In the 1980s (IIRC) this has previously resulted in long delays before patents were issued, but then Congress ordered to USPTO to clear its backlog, which means they now _have_ to grant most patents quickly, because if they don't the applicant will just make a few small changes and send the patent in again, but if they grant the patent its out of their hair.