Justin,
There are a couple of approaches you can consider. Line of Sight analysis (LOS), or Intersect 3D Line with Multipatch tool. I think LOS is easier but doesn't work well with vertical lines. If you connect your points and the resulting line is vertical, consider option 2. Both workflows are outlined below.
LOS
1. Run Construct Sight Lines tool to create lines from your points. You'll probably need a join field to ensure the right points get connected.
2. Run Line of Sight tool with raster surface and newly created lines. Be sure to fill in the parameter for Output Obstruction Point Feature Class as this will be where the line actually hits the surface.
3. Take the obstruction points and run Add Z Information tool using the elevation raster as the surface. You'll get an attribute of Z containing the surface height at that location.
Intersect 3D Line with Multipatch
1. Construct your sight lines as per above.
2. Convert your raster to a TIN.
3. Create a polygon that is big enough to contain all your points. Hopefully this polygon won't have to cover the full extent of the raster.
4. Run Interpolate Polygon to Multipatch. This tool requires a TIN surface (Hence step 2).
5. Intersect your sight lines with the multipatch using Intersect 3D Line with Multipatch tool.
6. With resulting points, run Add Z Information tool.
In the screenshots below, note that what appears to be a raster or TIN surface is actually the multipatch feature class I created. Because I used a small example I was able to make my entire surface a multipatch. I recommend minimizing your polygon to just the extent of the points if you have a large raster in terms of its extent.
Regards,
Eric