OpenSSL 1.0.2, 1.1.0, 1.1.1 and 3.0.0 behave slightly differently. For example I'm still getting a warning with 1.1.0. Only 3.0.0 supports OPENSSL_NO_DEPRECATED.
After multiple failed attempts I decided to set the API level to 1.1.1 and define the three TLSv*_method() functions explicitly. It's not the most elegant approach but it works. The symbols are available unless OPENSSL_NO_TLS*_METHOD is defined.