Indeed, ECMP uses some kind of hashing (dependant on the implementation) to do the distribution and doesn't take different line speeds into account at all.
Great improvement if this project does take this into account.
This is intentional: TCP treats packets received out-of-order as representative of an overloaded network. There’s generally a guarantee that packets sent in-order over a single link will be received in that order, but no such guarantee exists for packets sent through two completely independent links/networks. You need something on the receiving end (either at the destination or at the point where the separate paths converge) that will coalesce and re-order packets, such as an MPTCP or PPP implementation.