If you lose to another player, they are better than you on that day, no exceptions.
Here's the problem. Not only is a player with a (as you describe it) one dimensional game beating you; in all likelihood, any decent player who also possesses the ability to change the pace and game up will absolutely dominate you, because it sounds like you have no game against certain shots.
Your best bet would be to play with more players at that level. I had the same problem. Grew up playing with very high level players, but had a tough time against lower level players. Only way I got around it was to join a league on clay with decent older players who had mastered the 'slower' game. Fitness is also a huge help.