Each implementation chooses a path differently as it is not the part of the specifications. If the number of hops is equal, wallets will choose a route based on the fees and the capability to forward a payment. Some wallets might fail the payment if the fee exceeds a certain percentage of the amount sent.
The payer's wallet does not care how balanced the channels of an intermediary node are. Keep in mind that every channel can have its own fee policy. I would say that the channel with the lowest fee would be chosen. If the payment is too big then as long as the wallet supports multi-part payments, it will be split into smaller pieces which will be sent through different channels with various fee policies. By the way, I did some fee calculations in which you might be interested. It turns out that splitting a payment might be more cost-effective than sending it through a large channel.
I need to do a little bit more research on how specific implementations handle path finding. I will quote and answer your post in the FAQ or a separate thread once I have done enough research. What do you mean by "bruteforcing"? Every node keeps a map of the network which I believe is used for the route calculations.