You can have as many "contains" lines as you want in the "or". Assuming you want the same icon if #readinglist contains interesting then just add a third "contains" to the "or".
If you want different a different icon for "interesting" then you should use "first_non_empty" instead of "or" and have the "contains" return the name of the icon instead of "y". Something like
Code:
program:
first_non_empty(
contains(field('#ships'), "Angela Montenegro/Jack Hodgins", 'ships (crime).png', ''),
contains(field('#ships'), "Temperance Brennan/Seeley Booth", 'ships (crime).png', ''),
contains(field('#readinglist'), "interesting", 'someicon.png', '')
)