Young cats fight and squabble, young dogs fight and squabble, little children fight and squabble. They're at roughly the same stage of development - and cognitive function.
So you train them.
Have a third item to distract her with - if she grabs item 2, give DD1 item 3. She then wants item 3, give it to her and DD1 gets one of either 1 or 2.
Reward looking away from DD1's stuff. Every time she even slightly looks away, oh, here's a strawberry/bunch of Lego or Duplo/whatever so that she learns to pay attention to your voice calling her as it might be something interesting or tasty.
Don't set either up to fail. DD1 is always going to dangle whatever she's got in front of DD2 either when she goes straight to see her or because DD2 will make a beeline for her, so take it off her beforehand. It's like going to dangle a feather toy on elastic in front of a cat and then wailing because the cat won't let go of it.
Put something in DD2's hands first before she can get anywhere near DD1. Redirect that laser like focus onto you and what's in your hand.
Use sound and gestures and short phrases rather than long strings of words - 'Oh, hang on, please don't do that darling, you really need to give your sister a chance to play with the lollilolabeggybabywhatchamacallit because it was given to her by her friend Ava and it's not very kind...'. 'WaiT' (hand up), 'Leave'. Do similar when walking with them at each crossing - you stop, say 'wait', then walk on 'go'. Then get them to wait on the other side (treat incoming - maybe a single sweet). Both do it, it becomes instinctive to wait before moving, and it means something good is coming to hear you say it. Both become safer outside and at home has slightly less of two wailing kids screaming for something.
A truly Machiavellian parent would make a tiny double clicking sound with her tongue every time the child does something that's to be encouraged, like release the claw like grip even slightly, as that can be shaped into what you want her to achieve in the end.