Recent efforts in the area of collection set freeing concentrated on improving serial performance or parallelizing the existing method (JDK-8027295 and JDK-8034842).
Another option is to look into doing the CSet freeing work concurrently after the pause has completed, instead of in parallel at the end of the pause. There's already a mechanism in G1 to free regions concurrently (look at how the CM cleanup phase frees regions concurrently and makes them available on the secondary free list).
It should be possible to re-use a similar mechanism to also free the collection set regions too.
(after a recommendation by Tony P. in the comments for JDK-8027295)