Yes, this is "designed" behavior: there is only _one_ job for starting the process every x seconds.
The job executor locks the job before execution and unlocks it after running it. So if your job execution takes longer than the restart time of the process instance start it won't be unlocked yet. Hence the problem you are seeing.
A solution to your problem is to make parts of your workflow async, which will be executed in different jobs.