You are calling 'CreateMap' each time the method runs. As I understand, you should only do this once within your application domain. Try moving the CreateMap logic to where it gets called from Application_OnStart to see if that gives you more consistent behavior.
Also, the line:
.ForMember(x => x.images, opt => opt.MapFrom(src => allowedImages.Intersect(src.Images)));
may be troubling you. You may need to change that to an AfterMap that calls a static method that performs the Intersect on your source & destination collections.