I know the disadvantages of a high stale block rate include:
- More opportunities for double spend attacks
- Lower network difficulty making the network cheaper to attack
But I don't know how even an orphan block could affect the network
Orphan blocks (in that meaning) are not a network-wide condition. They're an implementation detail (and arguably a bug).
Orphan blocks are simply blocks for which a particular node in the network doesn't have the parent yet. It doesn't mean that parent does not exist.
Since Bitcoin Core 0.10, this concept simply doesn't exist anymore. They were a side effect of the old block fetching logic that requested whatever other peers offered. In the new "headers-first" logic, the headers are downloaded and validated first, before blocks are requested. This gives guidance to the node about what to download and in what order. Since that change, blocks are never requested before their parents are known, and if a peer were to send a block unsolicited anyway, it is simply discarded as a protocol error.