When searching for packets to .align, don't consider ones which would require padding beyond a label.
There are two problems with padding beyond a label:
the distance between labels may increase for some offsets to become too large;
u/sleb128 values that encode a difference will not be updated because they are computed before the align command is handled.
This is more a short-term fix/hack. The proper solution would be to unify .align and .falign handling and move it to the layout loop.