Obi-Wan and Yoda didn't really make a good effort at hiding him, especially considering they let Vader's family adopt him.
First, Vader didn't even know he had a son, so there was no reason for him to even look.
Second, Anakin couldn't wait to get off Tatooine, and there was no reason for him to return. While it was a time with his Mother, it was also where she died and a place where he was a slave, with someone telling him what to do all the time, which is not something a Sith Lord will want to remember. So Tatooine is probably the one planet Vader would never want to return to.
Third, Obi-Wan was close to Anakin and good friends with him, so he likely wanted to let Anakin's name pass on to another generation.
Fourth, he's staying with his aunt and uncle. While they don't have the Skywalker name, as relatives (it's never given exactly how close, since uncle and aunt are sometimes vague terms), it wouldn't be too out of place for them to be raising a Skywalker child.
Fifth, sometimes the best place to hide something is in plain sight.
It clearly worked, since Vader was not aware of him until after Luke blew up the Deathstar and Vader became obsessed with finding "Young Skywalker."
This answer is pretty much conjecture, and dips out of G-Canon, but:
The Emperor had the power to foretell the future (although, whether entirely accurately or not is up for debate).
The Sith have a tradition where, either the apprentice kills the master and takes on a new apprentice, or the master engineers the failure and death of the apprentice and replaces them.
It is entirely possible that the Emperor did know about the Skywalker children, but kept them a secret from Vader as some long-term gambit to force a Sith succession (which the scenes in the Death Star Throne Room can be interpreted as).
In fact, this worked very well, as Luke remained hidden from Vader and the Emperor until his protector decided to reveal him. Even after that, It took time for them to realize Luke's lineage.
As I explain here, they where not searching for him because they thought Amidala died before giving birth. Even after the first death star's destruction, the emperor didn't realize Luke was Anakin's son before he started his training with Yoda.
At best I'd say this is a plot hole and any attempts to explain it are just good tries at ret-conning what we know about how the OT turns out (i.e. Luke and Kenobi were never found) into the story.
Worse, the blame seems to be placed squarely on the prequels.
- Luke's dad is discussed in the OT--and they may mention his first name--but I'm pretty sure Anakin Skywalker made its debut in the prequels. Meaning Skywalker could have been Luke's ingognito name until Lucas ruined it. (Vader says Skywalker, but only after he knows Luke's real parentage, so any name he went by would have been said with gravity.)
- Same with Tatooine. We don't know Anakin is from there until TPM. Lars and Veru could have been moved there in hiding and ANH the first time we ever hear about it.
- Lastly, even Obi-Wan could have been explained by a better plot for the prequels. Obviously Vader knows him by that name, based on their chat before the duel on the Death Star, but if RoTS would have ended with Vader thinking Obi-Wan was dead, then him going by Old Ben on some random planet on the Rim would have been plenty low key.
It was a perfect ruse if you think about it. As the accepted answer already mentioned the bad memories meant that vader would not go voluntarily to tatooine and if he did he would not stay for long.
And with so many planets in the galaxy a similar name would not be that much out of order. Now in the new canon (the comics) Vader even had met luke personally fighting the young yedi after the death stars destruction and cleaning the floor with him.
He still was intrigued enough by him to send a bounty hunter after him. And only when the puzzle parts fell into place......ben kenobi training luke, giving him anakins old light saber AND luke being from Tatooine and a jedi AND having the Skywalker name.....only then vader understood the ruse that happened and that he had a son.
Thus hiding luke right in the open was the most sure way for people to overlook him (especially as nobody had searched for him or was aware that he was force sensitive).
To add to the best answer above, Skywalker may very well have been a slave name or a bastard name on Tatooine or even in that part of the Galaxy.
I personally like this because it concludes that twice a Skywalker (slave/bastard) goes on to become the most powerful individual in the Galaxy.
For me the only plot hole is that Vader never once noticed in 20 years that his "family" Mr. and Mrs. Lars were raising a Skywalker.