tl;dr: cheats are impossible to prevent because they exploit data that the server
must send to the client in order for the game to work at all. Here's a ramble on the topic:
Whenever you're playing a multiplayer game, the server has to send information to your system in order for it to display the other players and what they're doing. All it takes is for a program to intercept and interpret that data, at which point you can draw information to the screen (radars, etc) and inject inputs into the application to change the player orientation and fire off shots. Some things (particularly wallhacks) tend to require libraries to be injected into the game's address space or require a third-party DirectX/OpenGL/Vulkan DLL to be placed in the game directory in order to function. Those are typically detected fairly easily by standard anti-cheat solutions (pretty sure that's one of the things VAC searches for) so people who do that are usually detected and sanctioned fairly quickly.
Consoles being hack-proof is a pretty huge fallacy, and one that's bitten Sony in particular multiple times. It's fairly simple to jailbreak a PS4, and a jailbroken PS4 is no better than a PC in terms of security. Even without jailbreaking, by routing network traffic through a PC it's easily possible to gain access to information about players that may not even be on your screen. In some ways I'd argue that consoles are worse because they give their players a false sense of security. Let's consider a very common example: radars.
Consider an enemy behind cover. One of the classic strategies for increasing security is to restrict the amount of information that gets sent to the client. In some games, precompiled visibility information is used for this. For example, a map compiler may be able to determine, beyond the shadow of a doubt, that there's no way that a player in one room will ever be able to see into another room and will cache that visibility data into the map file. Let's take the following room layout as an example:
Let's assume that player 1 (P1) is in room A, player 2 (P2) is in room C, and player 3 (P3) is in room E. Since the visibility data has already been roughly calculated, the server will easily be able to determine that it's impossible for P1 and P3 to see each other, so P1 will never receive P3's info, and vice-versa. Since P2 can potentially be seen by both players, however, their information will be sent to both P1 and P3.
This system has its limitations, notably in that it only works on a macro scale. If both P1 and P2 were in room A, but P2 was hidden behind a large piece of debris, it's very likely that P1's client would still receive information about P2. If P1 were a cheating bastard and ran a program that could interpret and display that data, they could know which piece of cover P2 was hiding behind, as well as what direction their facing, giving them the opportunity to get the jump on P2 without it being immediately apparent that they're cheating.
Now to close things off on why the PC may very well look worse than it actually is. One of the things that have always separated PC shooters from console shooters has obviously been the control method. The mouse is far more nuanced and precise than controllers can ever hope to be, and there are some players out there that are just freakishly good. I'm far from a top-tier player, but when I'm in my groove I can chain multiple headshots together in a second. When you consider that there are people out there that can consistently pull off tricks that require 16ms of accuracy (speed runners, fighting game players, etc), it's not hard to imagine that there's a lot of people that legitimately do have such a level of precision that normal play to them can look like aimbot behavior to others.
There's also another thing that throws a massive spanner in the works that very few people consider: tick rates. While Destiny 2 on your computer shows every sign of running at a crisp 144hz, its network code most certainly is not. Destiny 2's network tick rate is variable, but on PC it maxes out at 40hz, or 25ms (or locked 30hz on console, to match the framerate). What you're actually seeing on your end is a smoothed out approximation of the other players' movements. If I manage to get a snap headshot and quickly pan my view elsewhere in a tick or two (which is far from impossible) it's going to look like I'm botting, and it's going to look quite a bit different on my screen compared to yours (on yours it'll look like a smooth, casual motion, while on mine it's going to be far twitchier).
The reason for low tick rates is simply to reduce network traffic and ensure that the game remains synchronized between players. While 40hz seems sluggish, it's fairly reasonable when it comes to Internet gaming (I think 60hz is as good as it gets at this time).
I hope that helps clear a few things up.