It's best to remove contamination as early as possible, to avoid chimeric assemblies and reduce assembly time, memory requirements, and fragmentation. The disadvantage is that it is harder to identify read-level contamination because reads are short, so sometimes it makes more sense to do these things iteratively - assemble, identify contamination, map to the contaminant genomes, remove contaminant reads, reassemble what's left over.
It seems extremely unlikely to me that you actually have contamination from so many different unrelated sources, unless they were multiplexed together. Is your lab researching all of these organisms? I've never seen a situation in which anything is heavily contaminated with multiple different animals. Often, there is heavy contamination by one organism, or trace contamination from multiple (particularly microbes). It's more likely that these BLAST hits are wrong (perhaps, the contaminant organism is not in the databases, even at a high taxonomic level). Rather than BLASTing in protein space, I suggest you do so in DNA space (against nt) to see if you can get some long exact matches to a specific organism rather than some genes that might be heavily conserved; that would give greater confidence.
I wrote several tools for decontamination, particularly BBSplit and Seal, both of which map reads to multiple genomes simultaneously to bin them into one file each by the best-matching organism, so that you can get a clean assembly of each one. They require assemblies, though. Seal may work better with transcriptomes than BBSplit. If this is cross-contamination (due to multiple projects being handled together or multiplexed together), CrossBlock is an even better solution.
Another thing to note is that you cannot quantify contamination by mapping the assemblies to nr/nt, particularly in transcriptomes. You have to use the raw reads, because even 1% contamination at the read level can assemble into 50% or more of your assembly. So, have you quantified the contamination at the read level? Again, I use Seal for that (since BLAST is way too slow to process all reads) once the contaminant organisms have been identified, but you can just blast a few thousand of the reads, instead.
Make sure that what you are seeing are actual contaminants, and not simply low evalue best hits. When I look for contamination I use megablast and I expect a very high evalue and high percent identity >95%. If I find that a few transcripts belong to specific species of bacteria/fungus, I download that genome and filter my reads with the tools Brian mentions below against that genome. Another thing to do is a GC content plot of your draft assembly. Different species have different GC contents, so if you have multiple peaks in such a histogram, it may indicate contamination. I believe QUAST can give you GC content plots online if you input your assembly.
Thanks, Adrian. Unfortunately, I found high e-value and identity for contamination. Also, there were multiple peaks for GC histogram indicating contamination as you kindly mentioned. So, I have to move for contamination removal. It would be great if you could please let me know the suitable parameters for filtering contamination.