I'm no expert, but here comes my definition:
Aimbot: The aimbot evaluates all the positions of other players (in fact enemies), which are send from the server. So the cheater (or his bot) can automatically aim at them (nearest enemy, enemy nearest his line of fire) without using his mouse, even although they are out of his field of view or he can't see them (walls). An aimbotter sees only the normal map, the aimbot "improved" his aiming, so that he is able to aim and track enemies perfectly.
Wallhack: The wallhack evaluates also the positions of ather players, and then displays the enemies on top of the walls. So the cheater can actually see the enemies through walls and knows where they hide and where they will show up.
The difference is, what the cheater sees on his screen and who is responsible for his aiming. Because both hacks know the positions of all players, both hacks are able to deal with hidden enemies. But a wallhacker has still a human aiming, while the aimbotter tracks enemies perfectly.
When I see a cheater who aims with snaps and un-human tracking at walls, I think these aiming comes from his aimbot. Perhaps he uses also wallhack, but it doesn't affect his aiming, only indirectly his movement (the ways he goes). So in my eyes such an aimbot can't really be enhanced by a wallhack.
Of course there are aimbots which only affect the aiming when it is possible to shoot the enemy. But in general a hack can access the positions of all players. Everything gets messy when the hacks are bound to a key, multiple hacks are used or they are setup in a very special way... Probably you are right, most cheaters use wallhack combined with an aimbot, which is configured to only aim at visible tragets.
I only know this from my imagination, some YouTube videos and Steve's
great cheat detection guide. Perhaps I'm wrong at all, please correct me...