I have 3 ESXi hosts, each with 4 uplinks dedicated to a port group. I want to utilize each of these uplinks for incoming/outgoing traffic (load balancing).
From what I understand I need to setup link aggregation and on my Force10 switches (stacked) and set IP Hash based load balancing.
VMware KB article 1021492 shows how to do this with Force10.
What isn't clear to me is, how many port channels do I need to setup?
One per ESXi host, or one for the entire port group? Does it matter?
You would configure one port channel per ESXi host. So, from your example, you would configure three individual port channels, each containing 4 switch ports.
You would setup a LAG for each vSwitch. If you assign all 4 physical NIC's to a single vSwitch, the simple answer is to setup one LAG with all 4 NIC's. This would be per-host. You can assign multiple port-groups to a single vSwitch.
There are other ways to do this, so, it all depends. :)
Distributed vSwitch will change things if you go that route.