Merge reports 'You must rerun snapshot because current snapshot files are obsolete', gets caught in Death Loop
For problems with dropping the table the things I would look at making sure there isn't a trigger, view or foreign key preventing the table from being dropped. Next time you apply the snapshot run Profiler pointed at the target database/server to return only Exceptions and Error messages while applying the snapshot against the subscriber. The messages returned should guide you to the exact cause.

Regarding the snapshot becoming invalid, double check the retention period configured for your distribution database. If this is less than the total time it takes to successfully apply the snapshot to the subscriber it will invalidate the snapshot and re-run the snapshot generation and restart the copy to the subscriber.