The solution was to use undocumented calls for the explorer function that SoundCloud uses (I used dev tools in Chrome to test AJAX calls).
https://api.soundcloud.com/explore/sounds/category?limit=L&client_id=XXX
It seems to use some sort of sorting by song popularity. Then the songs can be filtered only for music, checking the attribute "grouping". Then I need to allow a list of identifiers for real songs that can be done using a (documented, official) API call:
https://api.soundcloud.com/tracks?ids=1,2,3&client_id=XXX
This seems to work just fine, and I also get the added benefit of even distribution among genres. But, of course, this may stop working at any time, as the API calls are undocumented and may not be intended for public use.
source share