Release numbers would still be reset on adding:
xrev == 0 --> haskell-zlib-0.5.4.2-76-x86_64.pkg.tar.xz
add xrev == n && n > 0 --> haskell-zlib-0.5.4.2-1.n-x86_64.pkg.tar.xz
add <next ver>, xrev == 0 -->haskell-zlib-<next ver>-1-x86_64.pkg.tar.xz
The only concern that I have with your versioning is that having 0.x in the release number might suggest that the package is still in a testing stage. And I make xrev == 0 first class (not adding the ".n") because I believe Hackage revisions are ugly and should not exist.
Anyway, whatever scheme you choose it's good for me :)