Am I correct in thinking that the Bitcoin difficulty adjustment algorithm which dictates the target hash's difficulty value for blocks, where difficulty is adjusted every 2016 blocks, purely adjusts itself based on the current hashing power on the network?
Am I also therefore correct in guessing it does this so as to avoid having to use any external dependencies and thus any potentially centralised resources which could also be an attack vector such as referring to an external time server?
You can't adjust difficulty based on blocks alone. Ok 2016 blocks have been completed does difficulty go up or down? You need a second factor and that factor is time. So Bitcoin is dependent on real world timekeeping however Bitcoin does a few things to minimize the influence of time on the security of the network.