So unil this point all I can figure over was that until Android 4.2.2 there were two ways available to us :
Use the logcat and extract information from it
There is no Android-framework provided API yet which can be used to "read/intercept" USSD Messages in a Portable way.
The 2 approaches that you mentioned is what was available till now, but as you mentioned, support for it is dropped from Android open source project.
There is a request/discussion going on, which clearly shows that many developers are requesting this feature, but so far there is no update/communication from Google's side to explain future roadmap about adding support to "read/intercept" USSD Messages in a Portable way.