Android includes native SIP support since 4.x versions. Yet manufacturers and operators often cripple SIP system configuration/permissions or hide settings screens from users.
Take the Samsung Galaxy S5. It runs Android 6.0.1 and the “Phone” app still has “Internet call – Calling account settings”. SIP calling works perfectly fine on the latest Samsung Galaxy S7, it only needs to be configured the same way in “hidden” settings.
To view this settings screen, you need to start activity “com.android.phone.settings.PhoneAccountSettingsActivity” (or “com.android.phone.CallFeaturesSetting” on some other phones). You can do this in apps such as QuickShortcutMaker. Or just use my app All My that is primarily a Xposed module but it has a button dedicated to open this setting screen directly.
Update 4/2017: With later Android 6.0 ROM updates, there was an issue with sound (logcat showed “W/AudioGroup: device loop timeout”) but it’s reported to be ok again with Android 7.0.