After a bit of testing, I think I have determined the cause of this bug. It actually has nothing to do with how far away you are from the block. In fact, it seems to have something to do with a bug in Minecraft which has been fixed known as "click mining".
When you mine a row of blocks the "normal" way, standing directly in front of them and holding forward, the system works properly. Say you're mining a row of dirt blocks with a diamond shovel. There is a small amount of delay between each block's destruction and the next block destruction's beginning. If this is hard to understand, basically the arm has to swing back up before the next block can get hit, so there's a small amount of delay.
Someone discovered this and introduced "click mining" to the scene. All you did was release/repress the mouse button after each block was destroyed. This instantly returned the arm to the "unswung" position, eliminating the delay between each block's destruction. Notch figured this out and introduced a small delay after you press the mouse button down, so it negated the time advantage of click mining.
However, when doing the method you described, the block is broken before you're in range of the next block. So really, there's a small period between each dirt block where no block is in range. This instantly returns the shovel to the unswung postion, so there's no delay between blocks. The click mining fix only adds a delay after mouse presses, and this is not a mouse press, you're just holding it down, so there's no delay. Essentially, you've found a way around the click mining fix.
As for tall grass, it still works with grass on top of it. However, you must be aiming for the bottom of the block, because if the tall grass gets in range, the swing delay is reintroduced, leaving you with the delay again.
Long story short, yes, it's a bug. Still, it's sorta useful in select situations, but those situations are rare, so it's not a really big problem.
Resource packs will only replace the graphics (and presumably sound effects) of the resources they are overriding. Everything else will, in general, default to their vanilla graphics. I have often used an HD vanilla texture pack in a modded environment. The contrast between what is replaced and what is not is not really that big of a deal unless the texture pack is a drastic change from general minecraft appearance.
Best Answer
It's only possible by using a really complex system of detection and applying effects.
First you'll need some sort of detector (for example invisible marker armor stand) that would move relatively to a player, based on his rotation.
Then you'd just need a clock, that would give players haste or fatigue, based on data from the detector.
So, first of all you summon your detector:
Then you need a repeating command block, that would detect player rotation and tp the reader to right position. It would probably take quite a bunch of blocks with commands like this:
Using "teleport" works only in 1.10 snapshots, and it's going to move the reader relatively to the player. You could make command bigger and make it work with tp as well.
Then it's as simple, as giving the player effects, based on block, that detector fill find.
This is quite a complex system, so I would recommend making a resource pack instead.