[Samsung Galaxy S 5 Unified Development] ljani:
I'm having the same problem with Sonera Finland. I too have different APNs for mms and internet. Here's a logcat:

D/ConnectivityService( 650): registerNetworkAgent NetworkAgentInfo{ ni{[type: MOBILE[LTE], state: CONNECTED/CONNECTED, reason: connected, extra: wap.sonera.net, roaming: false, failover: false, isAvailable: true, isConnectedToProvisioningNetwork: false]} network{null} lp{{InterfaceName: rmnet0 LinkAddresses: [10.60.77.57/32,] Routes: [0.0.0.0/0 -> 10.60.77.58 rmnet0,] DnsAddresses: [192.89.123.230,192.89.123.231,] Domains: null MTU: 1500 TcpBufferSizes: 524288,1048576,2097152,262144,524288,1048576}} nc{[ Transports: CELLULAR Capabilities: MMS&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN LinkUpBandwidth>=51200Kbps LinkDnBandwidth>=102400Kbps Specifier: <1>]} Score{10} validated{false} created{false} explicitlySelected{false} }
D/ConnectivityService( 650): NetworkAgentInfo [MOBILE (LTE) - 101] EVENT_NETWORK_INFO_CHANGED, going from null to CONNECTED
D/ConnectivityService( 650): Adding iface rmnet0 to network 101
E/Netd ( 251): interface rmnet0 already assigned to netId 100
E/ConnectivityService( 650): Exception adding interface: java.lang.IllegalStateException: command '51 network interface add 101 rmnet0' failed with '400 51 addInterfaceToNetwork() failed (Device or resource busy)'
D/ConnectivityService( 650): Setting MTU size: rmnet0, 1500
D/ConnectivityService( 650): Adding Route [0.0.0.0/0 -> 10.60.77.58 rmnet0] to network 101
E/Netd ( 251): interface rmnet0 assigned to netId 100, not 101
E/ConnectivityService( 650): Exception in addRoute for gateway: java.lang.IllegalStateException: command '53 network route add 101 rmnet0 0.0.0.0/0 10.60.77.58' failed with '400 53 addRoute() failed (No such file or directory)'
D/PhoneApp( 1309): getPhone phoneId:0
D/ConnectivityService( 650): Setting Dns servers for network 101 to [/192.89.123.230, /192.89.123.231]
D/Nat464Xlat( 650): requiresClat: netType=0, connected=true, hasIPv4Address=true
D/ConnectivityService( 650): notifyType IP_CHANGED for NetworkAgentInfo [MOBILE (LTE) - 101]
D/ConnectivityService( 650): notifyType PRECHECK for NetworkAgentInfo [MOBILE (LTE) - 101]
D/ConnectivityService( 650): rematching NetworkAgentInfo [MOBILE (LTE) - 101]
D/ConnectivityService( 650): accepting network in place of null
D/CSLegacyTypeTracker( 650): Sending connected broadcast for type 2 NetworkAgentInfo [MOBILE (LTE) - 101] isDefaultNetwork=false
D/ConnectivityService( 650): sendStickyBroadcast: action=android.net.conn.CONNECTIVITY_CHANGE_IMMEDIATE
D/NetworkMonitorNetworkAgentInfo [MOBILE (LTE) - null]( 650): DefaultState{ when=0 what=532481 target=com.android.internal.util.StateMachine$SmHandler }
D/NetworkMonitorNetworkAgentInfo [MOBILE (LTE) - null]( 650): Connected
D/NetworkMonitorNetworkAgentInfo [MOBILE (LTE) - null]( 650): EvaluatingState{ when=0 what=532486 arg1=1 target=com.android.internal.util.StateMachine$SmHandler }
D/NetworkMonitorNetworkAgentInfo [MOBILE (LTE) - null]( 650): Validated
D/Tethering( 650): MasterInitialState.processMessage what=3
D/ConnectivityService( 650): notifyType AVAILABLE for NetworkAgentInfo [MOBILE (LTE) - 101]

This workaround works 100 times out of 100, but it's troublesome:

Looks like the routes are messed up..

EDIT: Adding a breakpoint for example here, the MMS goes through, but the data connection is not restored properly.