This is actually one of the things we're looking at with the open-source lowRISC project. Moving aspects of the I/O system to RISC-V cores to enable you to implement SPI, I2C, I2S etc and other custom protocols in software. http://www.lowrisc.org/docs/memo-2014-001-tagged-memory-and-...
In my view, this is being done continuously. Hardware designers are always conscious of what work can be moved to software. Thus the state of the art in hardware, at any given moment, will be exactly to do the stuff that isn't done well in software, or that is limiting the performance of software.
For this reason I think hardware will always be hard, because we will keep moving the goalposts as technology advances.
Interestingly, outside of the electronics realm, 3-d printing has begun to spur collaborative hardware design. So we should "never say never" about electronic hardware.
Place FPGA blobs down, now you have hardware like software components. But not an option for battery powered products, because of the high power requirements of FPGA's.
Not only that, FPGAs can't do sensing, can't condition analog signals, can't drive large currents. The power consumption is just one of many limitations.
However, software is usually evolved rapidly to avoid triggering design problems.
The solution should perhaps be moving more things off hardware and into software.