With LACP involved, can you check your switchports to see if they are sending active LACPDUs? Those ports will use "channel-group X mode active" (versus passive or "on"). I had one customer with strange interface issues until the switch port config was adjusted. The Linux bonding driver doesn't send active LACPDUs (by default, at least), so the switch port should be configured to do the work.
You can check the LACPDU values with tcpdump on the physical interface:
tcpdump -nni eth# ether proto 0x8809 -xXvv -s 0
Read the LACPDUs "Partner information" section and see if the system ID field is all zeros like this:
Partner Information TLV (0x02), length: 20
System 00:00:00:00:00:00, System Priority 65535, Key 1, Port 1, Port Priority 255
State Flags [Activity]
0x0000: 0000 0000 0000 0001 00ff 0001 0100 0000
0x0010: 0310
(this the output during my customer's problem). The Linux bonding driver will report the same (cat /proc/net/bonding/bond0). When the switch port is changed, you'll see some value in the System ID section.
You could also experience other "weirdness" with LACP if the two ends don't exchange info in the LACPDU. The hashing algorithm on each end should be such that one interface is used for upstream traffic and the other for downstream (as best you can). Changing the etherchannel load-balance algorithm on the switch changes it for *ALL* port-channels (sadly), so you will have some limits here.
With the LACP hashing at its default (layer2 hashing), you *could* cause a situation where traffic is largely flowing across one interface. You don't want both ends with the same hashing algorithm, either, as they'll both decide to use the same link, an the transmitting end strictly controls the hashing result for that frame; the receiving end has no power to influence things. Your best-best algorithm is something involving layer-3 information (most universally compatible).
If you have incomplete LACPDU information, and the portchannel is not really intact on the switchport side, you could have the issue my customer had with reply packets being strangely dropped and never received by the firewall kernel. Theirs manifested as a weird DHCP problem at first, but they did have a performance issue with hosts that were able to get connected.
You could also have a bad cable... I've found so many bad cables or pinched cables in datacenters and server rooms. Check your switch port for any interface errors, too. Even "good" cables have been known to go bad.