Upload to s3 with automatic retries and exponential backoff