Hi WilliamHamilton,
Your formula to get tmpRay is wrong based on what you posted. You are using max() twice when it should really be
float3 tmpRay = intersectDepthPlane(o, d, min(max(ray.z, minZ.r), minZ.g));
This ensures the value is confined between the minimum and maximum of the hi-z buffer values for that pixel.
I'm using Load for every texture retrieval in my ray tracing steps, so that shouldn't be the issue as long as you are calculating the load position correctly.
I think your cross epsilon value may be too high. Please see my comments on Post 56 of this thread (http://www.gamedev.net/topic/658702-help-with-gpu-pro-5-hi-z-screen-space-reflections/?view=findpost&p=5189285).
Hope that helps,
WFP