As of February 2017 none of top SMS apps are capable of merging SMS threads either from same contact or different contacts or same contact same number with just different number formats.
However there is a workaround that did the job for me.
As a preparatory step you can merge/link your contacts beforehand (if needed) with any contact manager app. I have used True Phone for that.
Get Google Hangouts v10 from apkmirror. Recent versions are worthless as they have [killed conversation merging] starting from v11.
Immediately after installation disable automatic update of Hangouts via Play Market (app page -> menu -> uncheck Auto-update).
Run Hangouts and select settings in menu. Turn on Enable merged conversations. Tap SMS, enable it and choose Hangouts as a default SMS app.
Unfortunately you will not be able to run Hangouts directly as it will insist on update on each run. But it can be launched from any other app that wants to send SMS.
If your stock dial application support messaging - launch hangouts from it. Alternatively you can install any good 3-rd party dial application (drupe worked for me). I just find contact, drag it to SMS, Hangouts is launched with a proper merged SMS thread. When sending you can select which number of destination contact to use. Nice feature of drupe is merging SMS with other IMs(skype, whatsup, viber, etc) into one feed per contact (only summary is there without message details).
PS. Beware of drupe's downsides: it is very aggressive app and it will use your contacts in a way that you may not like.