Hey, this sounds like a very interesting problem :)
Statistics not being my strong topic, I would go for a very straightforward approach.
Taking your proposed genome size of 3Mb and the 10000 homozygous SNPs into account, I would calculate first the expected average SNP density over this genome (not really realistic, but it's a start). 3Mbp/10k = 300bp
This would mean you would on average expect to encounter a SNP in your genome every 300 bp.
Now I would consider your genes that contain the 400 SNPs and calculate their (length divided with the expected SNP density) and exclude those that have this value higher than the actual number of SNPs. For example a 400bp gene with 1 snp would be excluded but a 500bp gene with 2 snps would be included. In this way you would get a set of genes that have a higher than average genomic snp density or "snp-enriched genes". Then I would use them as the subset list_2 in your enrichment analysis.
If you wanted to take into account local snp hot-spots and differing variant distributions throughout the genome, then you would need to fit a model to the data and test enrichment according to that model to get "snp-enriched genes" for your specific genome.
Could you briefly explain which approach finally worked for you?