Is the compact block protocol faster than normal blocks when it has to do getblocktxn/blocktxn round trip? When a compact block fails to rebuild a block from the mempool the node sends a getblocktxn message to learn about the missing transactions. 

Does requesting for the missing transactions make the compact block protocol as slow as the normal block during new block propagation?

Thanks!
Yes, compact blocks are still usually faster even when there is a getblocktxn round trip.

The reason for this is because all that needs to be sent in that case is the requests for the missing transactions and the missing transactions themselves.

Although the time is increased by another round trip in this case it is only a single round trip and there is little delay from sending the data itself (serialization delay) since there is very little data to send.

When a full block is sent many round trips can be required due to TCP flow control and packet retransmissions and simply from the time it takes to send the additional data.

In the case where almost all transactions are unknown (which doesn't happen in practice) compact blocks would take about the same amount of time as non-CB transmission.

FWIW, on my node here 86.75% of the last 288 blocks (203) required no round-trip and 99.9749% of transactions were known in advance (378715 out of 378810).