It has been over a month and I finally figured out how to do this (let it be noted that I haven't spent the whole month working on this problem!). I am posting my solution for anyone mad enough to want to do the same.
For 44100Hz and 48000Hz files the first 16-bits is always 16398. When 16382 is subtracted from this the result is the bit length of the value that holds the sample rate - in this case 16. For 96000Hz this value is 16399 and for 192000Hz it is 16400.
This is the interesting part... you use the first value retrieved to create a lowest-significant-bit pad for the second value, thus allowing it scale up into the higher sample rates: subtracting 16398 from the first value creates the number of bits of the pad, the bit shift (to the left) the second value by the first and you have the correct file sample rate!
A quick example: for a 96000Hz file the first 16-bit value is 16399. Subtract 16398 from this to get your LSB pad, in this case 1.
Read the second 16-bit as 2 bytes (readbytes(2)), in this case the values 187 and 128. Bit shift 187 left by 8 bits (187 << 8 = 47872) and add the 128 (48000).
Then bit shift that value using the LSB pad, so 48000 << 1 = 96000.