The best thing is to just avoid the specular reflections in the first place. It looks like you can use crossed polarizers for that. It's a very very common trick in photography to remove shine and reflections. Can you do that?
The main axis of a rectangle, according to regionprops which fits an ellipse to it, is not along the long edge. Of course going along the diagonal is longer so the major axis is along that and that is what your orientation angle will reflect. I did give some rotation demo here: http://www.mathworks.com/matlabcentral/answers/154523-calculate-and-crop-image-based-on-coordinates#answer_151500. But it looks like if you have a rectangle with some little bumps/protrusions out of it, then morphological methods will smooth out or eliminate all bumps, even corners. If you need a perfect rectangle you may have to find the corners and create a perfect rectangle from those.
See attached demo to find the furthest points in a binary blob.