If Bitcoin uses the number of preceding zeroes in a block (000000000000000a14da313e33fe2012b95c82ae03c58739888a440a845642f3) to set the difficulty, how is it possible for the difficulty to double or triple? Wouldn't it need to get 16 times harder because of an extra zero?
Perceptive. It doesn't.
Bitcoin doesn't use the number of zeros. Instead it converts the hash into a single big integer and requires that the value be less than a target value. The target value is adjusted every 2016 blocks as required to control the block rate and the "difficulty" number is just the ratio of the current hardness of the problem to the initial hardness.