Is it possible to select a location type for default contact reports, or is it just hard-coded to use the Primary address/email/phone? Also, would it be possible to list a report with multiple email addresses or phone numbers (e.g. a column for Home, Work, etc.)?
Can't comment on CiviReports, but I know my way around Drupal Views enough to suggest that as an alternative option since it allows you to specify for each field/column which Location Type to use for the phone, email etc
And to ensure you only see a single row for John even if he has multiple Work Phones it looks like there are two approaches.
Views Merge Rows module (not tried it) or
Views Field View which requires you to create a separate View display for each phone type/location and then insert that as a column, so eg for Home Phone it would give you a list of all the person's home phone in the one cell - but that adds a fair bit of work if you have to do it for many variations of phone/email v home/work etc, ie one view display per combination so the first option might be the better one to try