For question 3, the things that actually work, roughly in order of value per hour spent:
Authenticate the user, authorise every request. Each request should be checked against what that user is allowed to do, server-side, every time. This is the one that matters. Most real incidents are not "someone used our API" but "someone changed an id in a request and got another customer's data".
Rate limit per user and per address, with something stricter for unauthenticated endpoints.
Keep the expensive and dangerous operations behind your own server. If the client never has the ability to do the costly thing directly, no amount of replaying its traffic gets there.
Monitor for shape, not identity. Abuse looks different from use — bursts, sequential ids, odd hours, one account from many places. That is what catches the real cases.
Platform attestation services exist and do raise the cost for casual copying. They are worth considering after the above, never instead of it.