Paddle has no lookup-by-email and no create-if-absent, so every caller that
needed a customer for a known address wrote the same create-then-recover dance
and dug the existing id out of the exception message with a regex. The id was
there all along; only the parsing was in the wrong place.
PaddleConflictException now carries conflictingEntityId, filled by the SDK
exception mapper, and ImmediateCustomerService::findOrCreate() turns the
conflict back into the answer the caller asked for. A conflict that names no
entity still propagates — that one is not a hit.
Split from d5029d37de345d889b1fc4599f59dcf7bb975e00