So I extracted the Windows build with gdsdecomp and used it to make a Linux executable, being sure to untick "Export with Debug". You can extract this to the same folder as the base game and play as long as the name matches the .pck file.
This alone did not fix the lag, but now I can open the project in Godot and view the colliders via the debug settings.

This revealed that instead of the player having one magnet collider, every collectable has its own magnet colliders.

Every collider is an object, and every object inherits all the features (and overhead) of its parent classes. Much more all those colliders are also tracking everything they collide with (like other magnets colliders) even if they don't do anything with the data. No wonder why there's so much lag. If you move the magnet code to the player, you can get rid of the extra area 2D nodes and reduce the number of collisions. You don't need CharacterBody2d since they carry tons of functions intended for platformer games. move_and_slide() for example checks for friction and sliding between colliding objects. Complete overkill. The simpler move_toward() which comes with the Area2D node is plenty for this case.
Sorry if I'm mean here. Insomnia makes me cranky.
On a related note, I've fiddled with a few things, like making mimics rewards scale with your multiplier.

Above uses 1000 * ((Multi + 5)/5) where Multi = 30. At higher multipliers the text spills out and overlaps in ugly ways. This could potentially be an upgrade, though I'm not sure if to have this higher or lower than normal chests.
I also have an idea for a slime girl enemy that still grants semen if you fail, but success gives a higher amount plus reduces you multiplier decay for a few seconds (because her slime lubricates you.)