This app was mentioned in 3 comments, with an average of 1.67 upvotes
https://developer.android.com/training/connect-devices-wirelessly/nsd.html
I haven't done DNS-SD from Android specifically, but its how I discover my devices in my Homeseer plugins. Should work identically.
Edit:
I just tested this: https://play.google.com/store/apps/details?id=com.melloware.zeroconf
It sees them, too. (I expose mine both with mDNS and DNS-SD/SDDP, I think its seeing the mDNS endpoints.
Keep in mind that apps can add other "receivers" to the list of devices to Cast to. It might not be a Chromecast necessarily.
For example, YouTube and Netflix both add other devices to the list that they discover over DIAL, such as smart TVs that have their apps installed.
You could try an mDNS scanner like ZeroConf Browser to see if it's on your network ("_googlecast").
It could be a networking issue, or it could be an application implementation issue.
In order to isolate application support from network issues, grab Zeroconf browser from the play store. This app will let you fire off mDNS packets the same way Chromecast discovery works. Install wireshark on a PC and fire it up. Use a filter in wireshark like "mdns && ip.src == 10.10.10.100" to find mDNS packets coming from your phone. Replace 10.10.10.100 with the LAN IP address of your phone (check the openvpn app for this). If you don't see any packets, it's likely that you have some kind of openvpn configuration issue.
However, if you see mDNS packets in wireshark, then app support is likely to blame. The app your are using probably performs a connectivity test to ensure the device is connected to WiFi before enabling Chromecast support. This kind of problem is harder to confirm unless you're comfortable reverse engineering Android Apps.