Definitely sounds like hardware, especially with that detail at the end. It doesn't sound like a software problem, as you're receiving completely different errors on some boots, not to mention tinkering with the SATA cable causes a difference.
Back up your data before doing anything else, in case the hard drive is on it's last limbs!
Remove the cable from the drive and the motherboard. If you have a can of compressed air, use it on the connectors on the motherboard, drive, and both ends of the cable. Check that the cable fits snugly into the connectors. If it is loose, you could see mixed results on boot as it may move around slightly. There are SecureConnect cables for various drives, which you may be interested in if that is the case.
If securing the connections and cleaning them makes no difference, it may be a problem with the drive or motherboard itself. If you have a spare drive around, you could swap it and install an OS on it to test the behavior. Test different scenarios before throwing money down on new components.