You've already considered the best solution to the problem. Housing devolution is (almost always) bad, and should be avoided. (It is hard to prevent a house or two from temporarily devolving soon after evolving, right after food is first introduced to a bunch of sturdy huts, but that is of little concern.) If you know what causes your houses to devolve then prevent it. If you don't know then pay careful attention and click on a house that has just devolved (or better yet, that is about to devolve) to discover the problem. But be careful--if 4 1x1 spacious apartments appear when a common residence devolves, 1 of them should indicate the reason that the common residence devolved but the other 3 may have other problems.
Your houses "moving" is a consequence of the fixed sizes of more evolved houses. A devolving 4x4 estate will devolve into a 3x3 stately manor and 7 gardens. A devolving 3x3 common manor will devolve into a 2x2 fancy residence and 5 gardens. A devolving 2x2 common residence will devolve into either a 2x2 spacious apartment or 4 1x1 spacious apartments, depending on whether that location on the map allows a 2x2 sub-residence house to exist. If a house (including a house that results from devolution) is more than 2 tiles from a road, then it will soon disappear. If a devolved and shrunk house evolves back to a larger house, it may expand into a space different than the one that it previously occupied.
To prevent houses from "moving" even if they devolve and reevolve, use objects (other than gardens or housing) to prevent them from expanding into the "wrong" place. But this won't prevent estates from disappearing, if they devolve down to residences that are too far from the road.