Why does Photoshop read my exported Blender 16bit file as 32bit?
Because 16bit EXRs are floating point, but Photoshop's 16bit format is integer.

Integers represent simple whole numbers, in the case of int16, pixels are values from 0-65535. Floating point uses a special representation, sort of like scientific notation. It's still 16bits per channel though. Floats are less precise than integers, but allow a wider range of values. This is often useful for visual data, since our eyes have a very wide dynamic range but are not terribly precise.

The problem Photoshop is trying to deal with is the lack of dynamic range. 16bit integer (int16 for short) has 2^16 values, so it has 16 stops of dynamic range. 16bit floating point (float16 for short) is able to pack 30 stops into the same 16bits by using its scientific-notation-like way of writing the values. In order to avoid smushing that dynamic range, Photoshop needs to import it in 32bit mode.

On a further note, I would advise against importing OpenEXR files into Photoshop. In most cases, it's best convert to a display-referred format first (like 16bit TIFF or PNG, which is integer btw) which better accommodates Photoshop's editing model. See this question for related info: Render with a wider dynamic range in cycles to produce photorealistic looking images

Additionally, Photoshop is not equipped to handle data within OpenEXR such as additional passes, z-buffers, etc. As you can see from it's confusing switch to 32bit (due to lack of float16 support), Photoshop is simply not designed around the sort of data stored in an OpenEXR. "Pre-chewing" the data using Blender's compositor or another scene-referred comp tool (such as Fusion or Nuke) will make life a lot easier.