Let's start with your assumptions:
1) Photons travel at the speed of light.
Right. No problem with that.
2) From the photon's reference spacetime is contracted to 0 length in the direction of photon travel.
Wrong. The photon doesn't have any kind of reference frame. To appreciate why, imagine you're travelling at the speed of light. We know you can't actually do this, but just imagine it. Some would say that in your reference frame everything happens at once. But I know your course, and I can nudge an asteroid into your path: BLAM! It's game over for you. You didn't see the asteroid because you don't see anything when you're moving at the speed of light. Light would have to move faster than light for that, and it doesn't. So you don't see everything happening at once, you don't see anything. Or think anything either. You're a popsicle.
3) From the photon's reference it is emitted and absorbed at the same time and in the same place.
Wrong. Like I said, the photon doesn't have any reference frame. Its wavelength isn't length-contracted to zero either. It gets emitted, it moves through space at the speed of light with its E=hc/λ wave nature, then it gets absorbed. And these three events didn't happen at the same time. Note that I measure my time using my optical clock, which has light moving inside it. The elapsed time relates to how much the light has moved.
Now imagine a setup with 1 emitter and 2 detectors (E, D1, D2)... ...From the photon's reference, aren't the emitter and detectors sitting in the same place in its perceived 2D space?
No. It doesn't perceive anything. Just like you didn't perceive that asteroid.
Wouldn't it then be equally valid for the photon to be absorbed by D2, or both D1 and D2?
Does contracted spacetime maintain some sort of z-order?
Space doesn't change one iota just because you changed your speed through space. Nor do the things in space. Instead you change, along with your measurements of space and time and things.
Is there a paradox here or am I looking at it wrong?
You're looking at it wrong I'm afraid.
Is it ever valid to ask what happens in an external frame of reference?
Yes, that's no problem. The problem comes when you think there is a frame of reference when actually there isn't. And you are not the only person who has this problem.