You had better believe fsck, and it is telling you that there is a problem.
If badblocks says you are OK, I would be trying something more basic, like spinrite. I also would be considering replacing the cable to the drive, and I would be taking a look at the voltages applied to the drive to make sure they are in spec. I also would be looking for dust bunnies, or a bent connector pin, or anything else that could cause an intermittent malfunction or data error.
You didn't specify the interface, but I'm guessing SATA. Does the drive have error logging? What does that say? You access it with the smartctl -a command. Does the drive have a self-test mode? Try that too.
Is your controller on the motherboard, or a plugin?
Actually, truth is that in your position I'd have spinrite running that drive in a heartbeat. However spinrite costs $89 and because of that many people don't want to use it. Personally I found it to be money well spent.