How does orElse() cause new problems and/or break code? It is the same as get but forces you to think about the not available option...?
I think the options orElse/orElseGet and orElseThrow are enough to replace every get() method, and they'll force you to think about the missing scenario.
If you want to do something in case it is present, use ifPresent(lambda).
In case you want to return something, use orElse/orElseGet or orElseThrow, or just return the Optional itself.