I started writing this post and then realized I don't have an internally consistent definition of "hard" and "soft" counter. I think I interpret (and I use) "soft counter" to mean a counter that is not always 100% effective against the attack. By this definition, even Library is a soft counter to Militia, since you are still sometimes hurt even when you have a Library in hand, and Secret Chamber is a soft (though very close to hard) counter to Pirate Ship because it doesn't always work.
"Hard counter" therefore, to me, means a counter that is 100% effective. Moat, Horse Traders against Minion, Venture against Bureaucrat.