Where the alignments are on the < characters and the contents a, b, a+1 and b+1 are centred in their "cells", but 0, 1, 1 and 2 are right- or left-aligned as if they were the standard align environment.
For example, if I were to put this into a matrix or array environment:
Of course, this doesn't preserve the intra-line spacing as it's a matrix not an environment like align or alignat. But I think it gets across what I'm trying to do.
I'm not entirely sure what you're trying to do. Is the problem with yours just too much space between the "cells"? What about something along these lines?
Yes, but not with an array (because the between-line spacing is different for an array and, say, align - stick a \dfrac both lines in the same cell and they're too close).
I don't know if there are other options, and I don't know what the space is in align environments in AMSMath. Someone else may have some further ideas, but I really don't see this as a hack.