Idea for the angle limiter: when a collision changes either the X or Y velocity component to zero, apply the changes another time. (should make 0°, 90° ,180° and 270° impossible, preventing it from ever getting stuck)
Our next update has actually already set this up in a similar manner! It should be coming Monday. Great idea!