sed -E, 109 99 97 7575 74 bytes
h;s:.:0:g;G
:l;s:0.(0*.*)\n(.)(.*)\+?(.*):\1\n\3+\4\2\1:;tl
s:\+0+::g;s:\n..?::
Each line of the input is considered a separate number. Try it onlineTry it online.
Explanation:
h; | copy the original string to the temporary buffer
s:.:0:g; | substitute all digits with zeroes
G | append the original string to the substituted one
|
:l; | main loop start
s:0.(0*.*)\n(.)(.*)\+?(.*):\1\n\3+\4\2\1:; | cut the next digit from the number, append with zeroes and add to the back
tl | loop if the substitution hasn`t converged yet
|
s:\+0+::g; | remove all zero terms
s:\n..?:: | remove \n and the first +, if any
…can be golfed futher, I presume.