I2P would not make difference. Well without I2P I suppose it might be possible for the transport node to just manually block whatever IP address the crawler is connecting from, so they can't access the network at all. But even with I2P I think it should still be possible to automatically detect any spamming node and block it. Like I2P might not have a consistent form of identification that is the same everytime the node connects, but if you just block any sub-interface spamming link requests with a hopcount of 0 then the node will still be blocked upon reconnecting as it would continue spamming and be detected again. I mean you don't really have to limit it to nodes where all the spam has a hopcount of 0, even if it's above 0 (meaning the node is either a transport node transporting spam from another node, or a malicious node trying to pretend to not be the source) you could still block it and argue that it also has a responsibility to block spamming nodes, and that if it doesn't do that then you have to.
And this is all even without mentioning the fact that whether or not you use an IP or I2P interface every packet will include your transport identity. I suppose you can generate a new transport identity every time you reconnect, but like I said you can automatically detect a spamming node and block it. These are just way’s for the transport node to block a crawler though, a better solution for a situation like this would be the rngit node using either some kind of PoW stamp solution where every request has to include a stamp that needs some processing power to calculate, possibly slowing down the crawler and making it more expensive to send so many requests as it would need more electricity, or just blocking the crawlers identity. You could perhaps have a system combing stamps with identities where you only require stamps if multiple links identify with the same identity, and the more simultaneous links with the same identity, the harder the stamps would be to calculate, meaning the more you spam the more processing power you would need for each stamp. That’s specifically for a crawler that doesn’t reuse links though, if it does you could just require stamps if they reach a certain number of requests per second.