Okay, I've confirmed that as soon as I removed the SqlCmd variables from my dacpac, it started giving me meaningful responses. I suspect @GrayPockets saw the same behaviour as me, just with a different cause.
I have been able to successfully deploy the dacpac, but immediately hit another roadblock in that we can't specify options such as BlockOnPossibleDataLoss for the dbDacFx provider using MSDeploy.
So, I guess technically I've answered my question, but I'm still going to discard MSDeploy until Microsoft cleans up this mess of half-implemented tools.