You are making it much harder than needed. The seednode in the source should be like coin.seednode.org - Then you point that DNS to your node(s). When it looks for a seednode it looks for a list of IPs to basically addnode
This is why you only have connections through addnodes
FYI:
NS record should point to FQDN (see
http://www.rfc-editor.org/rfc/rfc1035.txt, chapter 3.3.11), that may not belong to specifically this domain, which in turn must have an A record in its zone. So basically all you need is this:
seed.cryptodistributed.org. IN NS seedvps.cryptodistributed.org.
seedvps IN A a.b.c.d
and the host a.b.c.d must run your dnsseed daemon.

Now I see! I've been going crazy but I see now where the problem is. I should set up my dns like this;
; Name serverscryptodistributed.org. IN NS ns1.cryptodistributed.org.
cryptodistributed.org. IN NS ns2.cryptodistributed.org.
seed.cryptodistributed.org. IN NS seedvps.cryptodistributed.org.
; A records for name serversns1 IN A 104.131.55.112
ns2 IN A 104.131.18.252
seedvps IN A 104.131.20.192
and in the coin like so;
chainparams.cppvSeeds.push_back(CDNSSeedData("cryptodistributed.org", "seedvps.cryptodistributed.org"));
Superficially, this looks redundant to me and is probably the reason why I had failed to understand.
Going to try this tonight.