That is where the PowerCLI Reference comes in handy.
If you look up the Get-CIVM cmdlet, under the Output section, you'll see that the cmdlet produces objects of type VMware.VimAutomation.Cloud.Types.V1.CIVM
Clicking that type, shows you what is inside such an object.
When you add an object to an output cmdlet (Select-Object in this case), PS will automatically try to convert that complex object into a String.
It calls the ToString() method on the object, and if that does not exist, it uses a default ToString method.
Converting an object to a String takes time, and I suspect that a property like Status in this object, forces PS to go out again to collect the 'current' status.
Again adding to the execution time.
In short, never output objects, but be specific, like the $_.VApp.Name in this case, which is a String.