This is the intended way of operation. As both hoppers try to push their first item each way, only one ends up moving.
To make hoppers pass the whole load before starting to pass it back, you need to block the next (opposing) hopper until your current one is empty. The standard way (that you mention yourself) is measuring the contents of the current hopper with a comparator, and feeding this signal into the next hopper.
Here's SethBling's hopper clock from Minecraftwiki:
![Hopper clock](https://i.stack.imgur.com/1BJRL.png)
Hoppers are directed clockwise, right now the items are moving from top left hopper to top right one, which is still locked by a signal from top comparator, and is already sending a lock signal to bottom right hopper.
For more designs, see this section on the wiki.
To start things with, let me clarify something from the comments on the question. Placed(fixed), in the world, blocks, items and even flowing water or lava, are not considered entities.
Per the minecraft wiki
Entities encompass all dynamic, moving objects throughout the
minecraft world.
Here is a list of entities in minecraft:
Types of Entities
The reason your wheat farm is not working, is because crops require at least one player to be in their chunk update radius.
Basically, your farm system works, but because the crops never grow, the villagers can't replant anything.
Your iron golem farm is working because, it does not require any player to be in its chunk update radius.
Events processed in spawn chunks
Some extra information on crop growth requirements:
Crop growth requirements
Something to note about spawn chunks:
Spawn chunks will not be unloaded from memory, regardless of how far away a player moves, so long as there is at least one player in the
overworld. All overworld chunks (including the spawn chunks) are
unloaded 60 seconds after the last player in the overworld enters the
Nether or the End.
In your case, I believe that the chunks do not get unloaded, due to your sending an item through the nether portal(items on the ground are considered entities).
Best Answer
The only reliable way to deal with such huge throughput of items with a sorter, is parallellizing.
Transport the items using water streams. Align them to the edge of the line of hoppers using sea pickles or chests. These hoppers would be the "middle" hoppers from the standard overflow-proof sorter design by ImpulseSV (you use water stream instead of the top line of hoppers). Obviously after short initial period when filling up, every sorter will only be able to take just one item per 8 game ticks (4 redstone ticks), so if you have 64 items per game tick, your sorter will need to be 256 blocks long - per one item type! - you just need to configure as many sorters (in parallel) to take the same type of the item that there are enough to capture and process the entire input.
Obviously transporting this out through any conventional means like hoppers or dropper lines or even minecarts would be completely impractical, so the bottom hoppers should be emptying into 1-tileable auto-droppers ejecting sorted items into a water stream, one stream per item type. You can similarly align the sorted items and use rows of hoppers to put them into storage.
ps. verify if it's really 64 items per tick sustained, because that's a pretty insane rate and while the above solution will work with it, it's really not practical - nothing is practical with this sort of rates. If it's just short bursts of large amounts of items, it might be smarter to limit the throughput and even it out a bit - snarf the items into a buffer then gradually eject through some auto-droppers.