The best way I've found to get HeartScales is to use Super Rod at the bottom of the falls in front of Sootopolis City. Have a Linoone that knows Covet in front. When you see LuvDisc, use Covet. If it has a HeartScale, Linoone will take it. Then just run from the battle. Take the HeartScale from Linoone and repeat. If you don't get a HeartScale 1st try, it doesn't have one; run away. I got 6 HeartScales in about 10-15 minutes doing this the other day.
There are other attacks that do this, (Trick for one) as well, but Covet is easy to get on an easy to catch Pokemon.
I don't know about the 14.5% stat; well over half the LuvDisc I tried this on had HeartScales on them.