Sadly, the only solution I can come up with is to use more geometry/edge loops. This is one of those worst case situations for vertex normals. A synced normal map will hide most of the issues, but normal maps still have to work through compression and have enough resolution to hide harsh gradients, and mipping will make those issues worse. So your options are A. Use lot more geometry or B. Use some more geometry + normal maps.