One better
solution is to take advantage of route tags or labels. When a route is
redistributed you tag it, and then when mutual redistribution occurs in
the other direction, you exclude routes that have that tag. You'd need
to do this in both redistribution directions, with different tags to
prevent loops in either direction. This method doesn't rely on the
behaviour of always increase metrics, so it would be more robust.
HTH,
Mark.