If there are no multiple positions for each `insertelement` we can do something like:

    i = 0;
    Insert[origlist, "mark", insertpositions] /. "mark" :> (++i; insertvalues[[i]])

if, there are it can be exteded easily, by making duplicates in `insertelements` or to make different `"marks"` for them.