Phaeron... when is that offsets added? Each pixel? when blitting one line (sizex=64 and sizey=0) why seems it adds the source stepx and stepy to start source? (Luckily it does but....)
X step is added each time the blitter steps to the next source byte within a row. Y step is added each time it processes a source row. Basically, the address of a source pixel at (x,y) in the blit is SourceBaseAddr + SourceStepX*x + SourceStepY*y. Pre-zoom and ignoring pattern mode, of course.
The X step is useful for rotation/flip operations and any time strided data is being accessed. This includes the attribute map (4 bytes/tile) and 80 column text mode (2 bytes/character).
As for why the VBXE does or doesn't have some features, that's partly for lack of anything to inform on what should be in it. There's not much software that uses VBXE and of course there was none when it was initially designed. To be honest it seems fairly well designed for a first iteration; it's just that as programmers we always want the hardware to do more.
The Amiga blitter didn't have fractional capability for regular blits. It could do fractional calculations in line draw mode, but that wasn't really usable for texture mapping. Unlike the VBXE blitter, it did have shifting capabilities, but that was to deal with the annoying evil abomination called bitplanes.