Possibly the network selection mechanisms as it has multiple layers and each one may have conflicting requirements with the others. For example, the network selection can be based on the provider of the network. So when you are in a scenario of ISP lock-in, you will need a layer that identifies which heterogeneous networks belong to your provider so you can handover only to those. However, network selection can be based on the strongest signal that you receive from networks. In this case, your provider may not have the strongest signal in the area and naturally you would want to avoid their network, however, if you are locked-in, you do not have this option. If you are not locked-in, then you would need to investigate how billing is handled by multiple providers of heterogeneous networks. To make things even more interesting, sometimes the network with the strongest signal does not necessarily provide you with the best QoS for a particular service you are using, either due to network congestion in the backbone or routing problems or peering and transit agreements between networks. In this case, you would probably want to avoid the network with the strongest signal and go with the network that provides you the best QoS for the services you use, even if the signal strength is not the maximum. So if you put it all together, you end up with a soup of different parameters, requirements and interests and you have to pick the best solution on a per-user basis.
The MAC layer. Because it is mainly a resource allocation and user association problem. So it seems that you do not have to change in the physical layer. Instead the changes could be related to the amount of bandwidth and power resources allocated for users, which is a MAC layer problem.
When the attributes that are related to decision are taken from the physical layer, it is across-layer problem.