can a counterfeit transaction be created that makes it look like the same signature spends the same utxo to a different payment address?
Yes. If you know the private key, you can sign as many conflicting transactions as you want. Zero confirmation transactions are not safe, because some mining pool can always broadcast one transaction to the network and create its own block with a different transaction that will transfer all coins back to the attacker. All that is needed is always trying to mine a block with non-broadcasted version of the transaction for each zero confirmation transaction, for which you know all needed private keys.
Nodes only need a single distributed block, a megablock, that only contains transactions with utxos.
How do you know who should receive transaction fees? With mining it is obvious that the miner who created the latest block matching the difficulty will get them. Without mining it should be somehow solved. You have two nodes and each of them received the same transaction. How to decide who was first? What if both are connected with the node that created the transaction? What will happen when they will be both connected directly in the future? Who was first and how it is decided without mining?
If the imported megablocks don't match, copies of the mismatching megablocks are shared between the peers they came from.
If each node is greedy and wants to get transaction fees, then each block is shared (because each node can claim all transaction fees), so there is a lot of traffic in the network, because coinbase transactions will be different for each node.
If all or any part of the imported megablock data is invalid, the node will eventually discover and correct it.
If there is no mining and each block is identical (except coinbase), then how to decide which coinbase transaction is correct? How to correct the coinbase transaction?
Only when a node gets a double spend does it broadcast about it.
It is exactly opposite situation to what we have now. Currently, each node can leave the network at will, because joining again and downloading missed blocks is possible. But if each node is required to know about each double-spending attempt, then all nodes have to be online all the time. Getting offline for a while can cause getting out of sync forever, because there is no mining. If one part of the network will receive transaction A and another part of the network will receive conflicting transaction B, then the network is splitted forever, because of first-seen-safe rule, each group of nodes think that another version is a double-spending attempt, so you have a different megablock for each group.
The utxo remains spent but both txs are discarded. So it doesn't matter what order they happened in, the attacker loses.
If both transactions are discarded during each double-spending attempt, then many coins could be burned by accident. That means another kind of attack is possible: each first owner of the coin can always create some conflicting transaction and invalidate the whole chain of transactions at will. That means the best strategy is creating one coinbase transaction and one transaction moving all coins to yourself. Then you can create conflicting second transaction by sending coins to yourself and invalidate all later transactions. In this way early adopters are the most powerful participants, because they can send coins to themselves N times and then they can do double-spend by burning N times, so the true owners will be left with no coins, because previous outputs for their transactions will be burned by the attackers.
If even 1 honest node responds to double spend attacks, it will secure the whole network.
No, it is the opposite: if even 1 evil node responds to double spend attacks by burning coins, it will destroy the whole network by constantly invalidating transaction chains, just because the attacker is early adopter and can destroy everything by double-spending the coinbase transaction.