"Effect from duplicate item pickups does not delay expiration"

You can achieve this via timers (with Set Timer By Event or Set Timer by Function Name for example). When you set the same timer again while it is already running, it resets from the beginning.

Not related to this issue but just general good practices: you should probably save the speed boost in a variable. That will make it easier to change the value later without having to find which node is doing what.
Also, not strictly needed, but you should probably save somewhere that your character is currently in ‘boost mode’. This gives you more freedom, for example if you want to cancel the boost from an external event, before the timer actually completes. Here is an example of what I mean, but this can be improved:

Finally, I strongly suggest you manage all the boost and pickup effects on your character blueprint (or somewhere else more persistent than the pickup actor), if this isn’t already the case. Do not do this in the pickup blueprint itself. If for some reason the pickup actor gets destroyed, then your timer will never finish and your character will be constantly boosted. But even then, the pickup effect is related to the character, not the pickup object, I think it just makes more sense to manage it on the character directly.
So, from the pickup actor point of view, this would look something like that:

And the actual boost logic is handled by the character. This also makes it easier to create different types of pickup blueprints.