I'm pretty sure the easiest way to get Heart Scales is to find wild Luvdiscs via fishing. They have a 50% chance of holding Heart Scales whenever you encounter one, so you can either catch a bunch or teach a Pokemon Thief and then use that to steal the items from them.
You can find wild Luvdiscs at Route 128, Ever Grande City, and Victory Road. You should probably use a Super Rod while fishing so there's a higher chance of finding them.
If you don't feel like fishing for Luvdiscs, you can find some more locations in the source I linked below. I can add them to this answer if you want as well.