5 added a non-recursive, non-competing version

# JavaScript (ES6), 60 bytes

f=(n,k=n*++n/2)=>k>9?f(!n,eval([...k+''].join('*+'[+!n]))):k


Try it online!

### Commented

f = (                     // f = recursive function taking:
n,                      //   n = original input
k = n * ++n / 2         //   k = current value, initialized to sum(i=1..n)(i)
) =>                      //
k > 9 ?                 // if k has more than 1 digit:
f(                    //   recursive call to f() with:
!n,                 //     a logical NOT applied to n
eval(               //     the result of the expression built by:
[...k + '']       //       turning k into a list of digits
.join('*+'[+!n])  //       joining with '*' on even iterations or '+' on odd ones
)                   //     end of eval()
)                     //   end of recursive call
:                       // else:
k                     //   stop recursion and return the last value


# Alternate version, 59 bytes (non-competing)

A non-recursive version that only works for n < 236172. (It covers the requested range but does not qualify as a valid generic algorithm.)

n=>[...'*+*+'].map(o=>n=eval([...n+''].join(o)),n*=++n/2)|n


Try it online!

# JavaScript (ES6), 60 bytes

f=(n,k=n*++n/2)=>k>9?f(!n,eval([...k+''].join('*+'[+!n]))):k


Try it online!

### Commented

f = (                     // f = recursive function taking:
n,                      //   n = original input
k = n * ++n / 2         //   k = current value, initialized to sum(i=1..n)(i)
) =>                      //
k > 9 ?                 // if k has more than 1 digit:
f(                    //   recursive call to f() with:
!n,                 //     a logical NOT applied to n
eval(               //     the result of the expression built by:
[...k + '']       //       turning k into a list of digits
.join('*+'[+!n])  //       joining with '*' on even iterations or '+' on odd ones
)                   //     end of eval()
)                     //   end of recursive call
:                       // else:
k                     //   stop recursion and return the last value


# JavaScript (ES6), 60 bytes

f=(n,k=n*++n/2)=>k>9?f(!n,eval([...k+''].join('*+'[+!n]))):k


Try it online!

### Commented

f = (                     // f = recursive function taking:
n,                      //   n = original input
k = n * ++n / 2         //   k = current value, initialized to sum(i=1..n)(i)
) =>                      //
k > 9 ?                 // if k has more than 1 digit:
f(                    //   recursive call to f() with:
!n,                 //     a logical NOT applied to n
eval(               //     the result of the expression built by:
[...k + '']       //       turning k into a list of digits
.join('*+'[+!n])  //       joining with '*' on even iterations or '+' on odd ones
)                   //     end of eval()
)                     //   end of recursive call
:                       // else:
k                     //   stop recursion and return the last value


# Alternate version, 59 bytes (non-competing)

A non-recursive version that only works for n < 236172. (It covers the requested range but does not qualify as a valid generic algorithm.)

n=>[...'*+*+'].map(o=>n=eval([...n+''].join(o)),n*=++n/2)|n


Try it online!

# JavaScript (ES6), 60 bytes

f=(n,k=n*++n/2)=>k>9?f(!n,eval([...k+''].join('*+'[+!n]))):k


Try it online!

### Commented

f = (                     // f = recursive function taking:
n,                      //   n = original input
k = n * ++n / 2         //   k = current value, initialized to sum(i=1..n)(i)
) =>                      //
k > 9 ?                 // if k has more than 1 digit:
f(                    //   recursive call to f() with:
!n,                 //     a logical NOT applied to n
eval(               //     the result of the expression built by:
[...k + '']       //       turning k into a list of digits
.join('*+'[+!n])  //       joining with '*' on even iterations or '+' on odd ones
)                   //     end of eval()
)                     //   end of recursive call
:                       // else:
k                     //   stop recursion and return the last value


# JavaScript (ES6), 60 bytes

f=(n,k=n*++n/2)=>k>9?f(!n,eval([...k+''].join('*+'[+!n]))):k


Try it online!

# JavaScript (ES6), 60 bytes

f=(n,k=n*++n/2)=>k>9?f(!n,eval([...k+''].join('*+'[+!n]))):k


Try it online!

### Commented

f = (                     // f = recursive function taking:
n,                      //   n = original input
k = n * ++n / 2         //   k = current value, initialized to sum(i=1..n)(i)
) =>                      //
k > 9 ?                 // if k has more than 1 digit:
f(                    //   recursive call to f() with:
!n,                 //     a logical NOT applied to n
eval(               //     the result of the expression built by:
[...k + '']       //       turning k into a list of digits
.join('*+'[+!n])  //       joining with '*' on even iterations or '+' on odd ones
)                   //     end of eval()
)                     //   end of recursive call
:                       // else:
k                     //   stop recursion and return the last value

3 saved 6 bytes

# JavaScript (ES6), 6660 bytes

f=(n,k=n*++n/2)=>k>9?f(!n,g=o=>k=evaleval([...k+''].join(o'*+'[+!n])))=>g*>9?f(0,g+):k


# JavaScript (ES6), 66 bytes

f=(n,k=n*++n/2,g=o=>k=eval([...k+''].join(o)))=>g*>9?f(0,g+):k


Try it online!

# JavaScript (ES6), 60 bytes

f=(n,k=n*++n/2)=>k>9?f(!n,eval([...k+''].join('*+'[+!n]))):k


Try it online!

2 saved 2 bytes
1