using PWM outputs after setting the value, is there a way to read what was sent?

The first issue that I see with your analogOutputReadPWM() function is it never actually returns val when it completes. I haven't dug into the Arduino AnalogWrite() function to know if any of the other logic is correct, but conceptually reading the register that is controlling the hardware PWM pin is the way to go if you really don't want to remember what value you sent to AnalogWrite() as a global variable and report the contents of that global variable.

I suppose your method would be simpler if one has a 3rd (or even 1st) party library that controls PWM and one doesn't want to bother modifying libraries, and locally maintaining one's fork of the library over updates to the effected library.

P.S. My apologies if I should have used "affected" instead of "effected"... This is one of the grammar rules with which I always have issues.