Have you looked into background runspaces?
There's a great into to the concept at http://learn-powershell.net/2012/05/13/using-background-runspaces-instead-of-psjobs-for-better-performance/
I've also got background runspaces heavily used in https://sqlpowerdoc.codeplex.com/ – feel free to look at the code and use the relevant parts as needed to get up to speed on how runspaces work.