The thing with i2p is that everything has its own address called Destination, which is a pair of cryptographic keys. The whole point of i2p is to hide where this Destination is coming from in the real world.
Your HTTP proxy (which you use to access i2p) also has a Destination.
Other parties that your tunnels communicate with also see your Destination.
One of those parties is the outproxy.
So, for example, if you search for something on Duckduckgo and then open Wikipedia, your outproxy can see: destination qoiwdasdjkfj has made some requests to
https://duckduckgo.com and then to
https://en.wikipedia.org
The specific page you visit is encrypted by HTTPS (if you are using https to access the sites). But it's not possible to prevent outproxy operator from knowing which sites you visit (since the outproxy needs to know it in order to know where to connect to). (Acetone's public outproxy even lists what domains are visited through it, but not linked to Destinations. See
http://outproxy.acetone.i2p ).
What might be possible is to distribute your requests over multiple outproxies.
If i remember correctly, in Java I2P you can just specify multiple outproxies separated by commas (but i'm not sure).
In i2pd, I'm not sure whether that's possible with the default http proxy implementation.
Another way you can do it is create your own HTTP proxy that connects to I2P using the SAM protocol, this way you can code any logic into it, including outproxy cycling, etc. But programming knowledge is required. SAM documentation can be found on the official site of i2p,
http://i2p-projekt.i2p
But the thing with tor is that it usually runs alongside i2p, so external observers may see that you use both i2p and tor at the same time. Moreover, tor does not have the same cover traffic that i2p provides with transit tunnels, so it is easier to do time correlations.
It is probably possible to run tor on top of i2p by using a bridge node inside of i2p.