Splitting a group of numbers into $k$ sorted groups
Your second idea seems to be close. Here is the actual algorithm (no random pivot is required):

Find the $i{n\over k}$'th order statistic for every $1\le i\le k$. This will take $O(n)$ each time for $k$ values: $O(nk)$.
For every such $i$, put all elements with values between the $i{n\over k}$'th and the $(i+1){n\over k}$'th order statistics in the $i$'th bucket. For each $i$ it would cost $O(n)$ and there are $k$ different values for $i$, thus total of $O(nk)$.

Both steps take $O(nk)$ and therefore the entire algorithm runs in $O(nk)$ as required
Hint for the second question: think how you can combine this algorithm with a coarse version of quicksort